Forum Webscript.Ru

Общие => Базы данных => Тема начата: XLighter от 15 Февраля 2002, 13:27:25

Название: Посчитать строки при использовании LIMIT
Отправлено: 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....
Название: Посчитать строки при использовании LIMIT
Отправлено: Chs от 15 Февраля 2002, 13:35:00
А по другому ИМХО не получиться, только через SELECT count(*) FROM....
Название: Посчитать строки при использовании LIMIT
Отправлено: NAS от 15 Февраля 2002, 13:38:13
Ээээ, а может посчитать не в запросе, ты ведь наверняка результат в массив скидываешь, а вот там и посчитать.
Название: Посчитать строки при использовании LIMIT
Отправлено: Chs от 15 Февраля 2002, 13:51:07
Цитировать
Ээээ, а может посчитать не в запросе, ты ведь наверняка результат в массив скидываешь, а вот там и посчитать.

Он не весь результат в массив скидывает, он скидывает только часть, ограниченную LIMIT. А нужно общее количество записей выбранных по данным условиям.
Название: Посчитать строки при использовании LIMIT
Отправлено: MadDog от 15 Февраля 2002, 17:28:41
А если разбить запрос на две части, например так:

$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");
//дальше вывод результатов выборки
Название: Посчитать строки при использовании LIMIT
Отправлено: AliMamed от 15 Февраля 2002, 17:34:34
MadDog  это не разбить запрос на две части
это сделать два запроса
=)
Название: Посчитать строки при использовании LIMIT
Отправлено: AlieN от 20 Февраля 2002, 14:42:51
Можно сделать полный запрос тобиш select * и то что нужно показывает решать должен скрипт но в таком случае производительность на минусе
Название: Посчитать строки при использовании LIMIT
Отправлено: Боря Елкин от 20 Февраля 2002, 15:43:38
Если бы Mysql не был столь ограниченным, то решений было бы куча (подзапросы, объединения и т.д.)

Но я тут подумал - вобщем кое-что получилось и с mysql сделать.

select cat.ID, count(cat2.ID) as cnt from catobjects cat, catobjects cat2
GROUP BY cat.ID
limit 0,10
Название: Посчитать строки при использовании LIMIT
Отправлено: Chs от 20 Февраля 2002, 15:56:13
:) Вот интеоесно, что будет работать быстрее - два select (один с count, другой c limit) или предложенаня выше склейка таблицы с собой.
XLigther, проверишь?