Общие > Базы данных
Посчитать строки при использовании LIMIT
XLighter:
Есть запрос, ищущий подстроку в таблице, попутно вытаскивая часть полей из других таблиц. Все это заканчивается LIMIT n,m. Например:
SELECT hostname,path,filename,size,date,isfile FROM ftpsearch_hosts,ftpsearch_paths,ftpsearch_files WHERE ftpsearch_hosts.id = ftpsearch_files.hostid AND ftpsearch_paths.id = ftpsearch_files.pathid AND (filename LIKE \'%avp%\') AND ftpsearch_files.size >= \'0\' ORDER BY hostname LIMIT 0,30
Как в этом же запросе посчитать, сколько всего записей было найдено? Сколько записей вернул MySQL с учетом LIMIT меня не интересует.
Не хочется делать второй запрос с SELECT count(*) FROM....
Chs:
А по другому ИМХО не получиться, только через SELECT count(*) FROM....
NAS:
Ээээ, а может посчитать не в запросе, ты ведь наверняка результат в массив скидываешь, а вот там и посчитать.
Chs:
--- Цитировать ---Ээээ, а может посчитать не в запросе, ты ведь наверняка результат в массив скидываешь, а вот там и посчитать.
--- Конец цитаты ---
Он не весь результат в массив скидывает, он скидывает только часть, ограниченную LIMIT. А нужно общее количество записей выбранных по данным условиям.
MadDog:
А если разбить запрос на две части, например так:
$sql="SELECT hostname,path,filename,size,date,isfile FROM ftpsearch_hosts,ftpsearch_paths,ftpsearch_files WHERE ftpsearch_hosts.id = ftpsearch_files.hostid AND ftpsearch_paths.id = ftpsearch_files.pathid AND (filename LIKE \'%avp%\') AND ftpsearch_files.size >= \'0\' ORDER BY hostname ";
$query=mysql_query($sql);
$count=mysql_num_rows($query);
$query2=mysql_query($sql."LIMIT 0,30");
//дальше вывод результатов выборки
Навигация
Перейти к полной версии