Автор Тема: Посчитать строки при использовании LIMIT  (Прочитано 3580 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн XLighter

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 1
  • +0/-0
  • 0
    • Просмотр профиля
Есть запрос, ищущий подстроку в таблице, попутно вытаскивая часть полей из других таблиц. Все это заканчивается 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

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Посчитать строки при использовании LIMIT
« Ответ #1 : 15 Февраля 2002, 13:35:00 »
А по другому ИМХО не получиться, только через SELECT count(*) FROM....
2B OR NOT 2B = FF

Оффлайн NAS

  • Неопытный юзер
  • Администратор
  • Ветеран
  • *****
  • Сообщений: 2951
  • +1/-0
  • 1
    • Просмотр профиля
    • http://nhouse.ru
Посчитать строки при использовании LIMIT
« Ответ #2 : 15 Февраля 2002, 13:38:13 »
Ээээ, а может посчитать не в запросе, ты ведь наверняка результат в массив скидываешь, а вот там и посчитать.

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Посчитать строки при использовании LIMIT
« Ответ #3 : 15 Февраля 2002, 13:51:07 »
Цитировать
Ээээ, а может посчитать не в запросе, ты ведь наверняка результат в массив скидываешь, а вот там и посчитать.

Он не весь результат в массив скидывает, он скидывает только часть, ограниченную LIMIT. А нужно общее количество записей выбранных по данным условиям.
2B OR NOT 2B = FF

Оффлайн MadDog

  • Главный Металликолог
  • Ветеран
  • *****
  • Сообщений: 679
  • +0/-0
  • 2
    • Просмотр профиля
Посчитать строки при использовании LIMIT
« Ответ #4 : 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");
//дальше вывод результатов выборки
So let it be written
So let it be done I\'m creeping death

Оффлайн AliMamed

  • \\o/ ali akbar \\o/
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2409
  • +2/-0
  • 2
    • Просмотр профиля
    • http://alimamed.pp.ru
Посчитать строки при использовании LIMIT
« Ответ #5 : 15 Февраля 2002, 17:34:34 »
MadDog  это не разбить запрос на две части
это сделать два запроса
=)
ну, будем исповедоваться?

Оффлайн AlieN

  • Абыр!=)
  • Ветеран
  • *****
  • Сообщений: 1315
  • +0/-1
  • 2
    • Просмотр профиля
Посчитать строки при использовании LIMIT
« Ответ #6 : 20 Февраля 2002, 14:42:51 »
Можно сделать полный запрос тобиш select * и то что нужно показывает решать должен скрипт но в таком случае производительность на минусе
The Chemical Brothers - Hey Boy Hey Girl (User Friendly Mix)
Peter Presta pres - Set Sail(Peter Presta Apple Jaxx Dub) She S.Sunshine Feat Mila - Bring The Beat Back (Club Mix) Jerry Ropero - Home Alone (Dub Mix)

Оффлайн Боря Елкин

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 59
  • +0/-0
  • 0
    • Просмотр профиля
    • http://webmetr.pips.ru
Посчитать строки при использовании LIMIT
« Ответ #7 : 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

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Посчитать строки при использовании LIMIT
« Ответ #8 : 20 Февраля 2002, 15:56:13 »
:) Вот интеоесно, что будет работать быстрее - два select (один с count, другой c limit) или предложенаня выше склейка таблицы с собой.
XLigther, проверишь?
2B OR NOT 2B = FF

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28