Forum Webscript.Ru
Общие => Базы данных => Тема начата: XLighter от 15 Февраля 2002, 13:27:25
-
Есть запрос, ищущий подстроку в таблице, попутно вытаскивая часть полей из других таблиц. Все это заканчивается 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....
-
А по другому ИМХО не получиться, только через SELECT count(*) FROM....
-
Ээээ, а может посчитать не в запросе, ты ведь наверняка результат в массив скидываешь, а вот там и посчитать.
-
Ээээ, а может посчитать не в запросе, ты ведь наверняка результат в массив скидываешь, а вот там и посчитать.
Он не весь результат в массив скидывает, он скидывает только часть, ограниченную LIMIT. А нужно общее количество записей выбранных по данным условиям.
-
А если разбить запрос на две части, например так:
$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");
//дальше вывод результатов выборки
-
MadDog это не разбить запрос на две части
это сделать два запроса
=)
-
Можно сделать полный запрос тобиш select * и то что нужно показывает решать должен скрипт но в таком случае производительность на минусе
-
Если бы Mysql не был столь ограниченным, то решений было бы куча (подзапросы, объединения и т.д.)
Но я тут подумал - вобщем кое-что получилось и с mysql сделать.
select cat.ID, count(cat2.ID) as cnt from catobjects cat, catobjects cat2
GROUP BY cat.ID
limit 0,10
-
:) Вот интеоесно, что будет работать быстрее - два select (один с count, другой c limit) или предложенаня выше склейка таблицы с собой.
XLigther, проверишь?