Задавайте вопросы, мы ответим
Вы не зашли.
Привет всем!
Есть рабочий запрос, который вытягивает нужные данные из таблицы
$result5 = mysql_query("SELECT anketa.*, foto_user. activ, users.avatar, bd_day, bd_month, bd_year, visiting_m, visiting_d, visiting_y, visiting_time, nik, city, online, (YEAR(CURDATE()) - YEAR(DATE(CONCAT(`bd_year`, '-', `bd_month`, '-', `bd_day`))) - IF(RIGHT(CURDATE(), 5) < RIGHT(DATE(CONCAT(`bd_year`, '-', `bd_month`, '-', `bd_day`)), 5), 1, 0)) AS `age` FROM anketa, foto_user, users WHERE users.del_ank = '0' and users.id = anketa.id_user and ($lf_S) $city_S $albom_foto $online_user GROUP BY anketa.id HAVING `age` >= $af AND `age` <= $at ORDER BY id DESC LIMIT $start, $num",$db);
выше этого запроса есть код, который должен посчитать количество того, что вытаскивает этот запрос через mysql_query("SELECT COUNT(*)...., только я не знаю как его правильно написать.
у меня был похожий, но только из двух таблиц))) не могу слепить из трех)
$result00=mysql_query("SELECT COUNT(*) FROM anketa INNER JOIN users ON anketa.id_user=users.id WHERE ($lf_S) and ($city_S) and ($age_S) $albom_foto $online_user",$db);
Помогите пожалуйста
Неактивен
и тишина... неужели никто ничего подсказать не может?
Неактивен
Не удобно у тебя написано. C "Syntax"-ом симпатичнее будет.
Отредактированно maximus_wand (16.09.2012 19:52:44)
Неактивен
maximus_wand, спасибо что откликнулся. Ты правильно понял, мне нужно подсчитать количество строк, но этот запрос почему то не работет. Я очень плохо в таких сложных запросах разбираюсь, поэтому вообще не могу понять где ошибка...
maximus_wand написал:
наверно, можно убрать "ORDER BY id DESC", а DESC добавить в GROUP получиться:
GROUP BY anketa.id DESC
ORDER BY id DESC вообще не нужен и DESC в GROUP BY помоему тоже не нужен... насколько я понимаю DESC в запросе где нужно посчитать количество строк вообще никак не свистит))) и LIMIT $start, $num; тоже не нужно...
а вот в остальном я не могу понять, что нужно, а что нет) единственное что не пойму, почему в твоем запросе нет в SELECTe (foto_user. activ, users.avatar, bd_day, bd_month, bd_year, visiting_m, visiting_d, visiting_y, visiting_time, nik, city, online,) ?
Неактивен
Если тебе нужно получить кол-во строк, которые вернёт запрос, например, чтобы потом сделать разбивку на страницы, но сами данные тебе не нужны.
То нужно этот запрос выполнить с минимальным кол-вом полей, чтобы не загружать сервер зря. Поэтому почти все поля выкинул.
Если убрать совсем все поля то GROUP и Having не выполнятся и кол-во строк будет не то.
Если нужно получить данные и знать сколько в них строк, то используется функция mysql_num_rows.
Тебе нужно первое, второе или ещё чего-то другое?
Неактивен
И вообще говоря можно любой запрос обернуть снаружи в
Неактивен
maximus_wand написал:
Тебе нужно первое, второе или ещё чего-то другое?
Первое)))
maximus_wand написал:
например, чтобы потом сделать разбивку на страницы, но сами данные тебе не нужны.
Прям целая проблемма... просто для меня сам запрос сложный, а вот как правильно написать запрос для подсчета, вообще не могу сообразить...
Неактивен
короче, морочу всем голову, сам не могу понять что мне нужно...
это запрос из кода для постраничной навигации... вот рабочий пример из другой моей страницы
Неактивен
serj011 написал:
может мне mysql_num_rows вообще в этом случае не подходит)))
Что значит не подходит? mysql_num_rows подходил для любого запроса.
serj011 написал:
просто этот запрос для меня очень сложный и я не знаю как его всунуть в $result00 через COUNT(*)?...(
Чтобы простым способо получить количество строка, которые вернёт запрос -принцип следующий - содержимое любого запроса (если не хочется или не можется упростить запрос) - запрос оборачивается в SELECT count(*) FROM (ТЕКСТ_ИСХОДНОГО_ЗАПРОСА) t;
Неактивен
я пробовал, может я его не првильно написал?
$result00=mysql_query("SELECT count(*) FROM (SELECT anketa.*, foto_user.activ, users.avatar, bd_day, bd_month, bd_year, visiting_m, visiting_d, visiting_y, visiting_time, nik, city, online, gender, (YEAR(CURDATE()) - YEAR(DATE(CONCAT(`bd_year`, '-', `bd_month`, '-', `bd_day`))) - IF(RIGHT(CURDATE(), 5) < RIGHT(DATE(CONCAT(`bd_year`, '-', `bd_month`, '-', `bd_day`)), 5), 1, 0)) AS `age` FROM anketa, foto_user, users WHERE users.del_ank = '0' and users.id = anketa.id_user and ($lf_S) $city_S $albom_foto $online_user GROUP BY anketa.id HAVING `age` >= $af AND `age` <= $at) t;",$db);
Неактивен
А чем Вас результат "пробы" не устроил? mysql_query вернул ошибку? Если да, то напишите какую. И опять же - сам запрос внутри SELECT count(*) FROM (...) срабатывает?
Неактивен
сам запрос работает, и мало того результат "пробы" тоже работает, только не так как нужно.
может я сейчас напишу как полный лузер, это в силу моих плохих знаний(
$result00=mysql_query("SELECT count(*) FROM (SELECT anketa.*, foto_user.activ, users.avatar, bd_day, bd_month, bd_year, visiting_m, visiting_d, visiting_y, visiting_time, nik, city, online, gender, (YEAR(CURDATE()) - YEAR(DATE(CONCAT(`bd_year`, '-', `bd_month`, '-', `bd_day`))) - IF(RIGHT(CURDATE(), 5) < RIGHT(DATE(CONCAT(`bd_year`, '-', `bd_month`, '-', `bd_day`)), 5), 1, 0)) AS `age` FROM anketa, foto_user, users WHERE users.del_ank = '0' and users.id = anketa.id_user and ($lf_S) $city_S $albom_foto $online_user GROUP BY anketa.id HAVING `age` >= $af AND `age` <= $at) t;",$db);
$temp=mysql_num_rows($result00);
если вывести echo $temp, то выдаст правильно посчитанное количество строк...
а если вывести echo $temp рабочего кода постраничной навигации (Пост №8, 3 и 4 строки), который нормально работает на другой странице то результатом будет Array. ????
Т.е. сам код работает и считает количество строк, но не работает весь код, который выводит постраничную навигацию...
Неактивен
Не надо плодить темы (повторную удалил)
serj011 написал:
$temp=mysql_num_rows($result00);
если вывести echo $temp, то выдаст правильно посчитанное количество строк...
а если вывести echo $temp рабочего кода постраничной навигации (Пост №8, 3 и 4 строки), который нормально работает на другой странице то результатом будет Array. ????
Потому что mysql_num_rows возращает число, а mysql_fetch_array массив.
serj011 написал:
Т.е. сам код работает и считает количество строк, но не работает весь код, который выводит постраничную навигацию...
Спорный вывод, в коде постраничной навигации используется $posts=$temp[0];
Неактивен
vasya написал:
Спорный вывод, в коде постраничной навигации используется $posts=$temp[0];
Не понял смысл...) Помогите с запросом пожалуйста, я готов заплатить... он меня замучал уже )
Неактивен
Ещё бы понять в чем именно помочь. Вам нужен был запрос, который считает кол-во строк, вам его подсказали, и насколько я понял он работает у вас правильно. Уточните в чем заключается текущая проблема.
Неактивен
вроде разобрался... проблемма в другом была) запрос действительно работает) спасибо
Неактивен