Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.01.2011, 23:42   #1
lacost
Пользователь
 
Регистрация: 25.03.2007
Сообщений: 67
По умолчанию Получить количество строк не делая лишний запрос

Суть вот в чем:
есть запрос
Код:
Select * from table where filed=value limit 10
- ну суть ясна
как получить количество строк подходящих под этот запрос не делая лишнего запроса типа
Код:
Select count(*) from table where filed=value
Реально ли это?

Последний раз редактировалось Stilet; 19.01.2011 в 17:53.
lacost вне форума Ответить с цитированием
Старый 19.01.2011, 00:04   #2
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Посчитать в цикле.
Прик вне форума Ответить с цитированием
Старый 19.01.2011, 13:38   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Код:
Select count(*) from table where filed=value
Select count(*) from table where filed=value Limit 10 
по сути это два РАЗНЫХ запроса. У них РАЗНЫЕ условия. Для второго где условия совпадают с исходными можно посчитать в цикла. Для первого (с другими условиями причем более широкими) только новый запрос.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось Stilet; 19.01.2011 в 17:53.
evg_m вне форума Ответить с цитированием
Старый 19.01.2011, 17:36   #4
lacost
Пользователь
 
Регистрация: 25.03.2007
Сообщений: 67
По умолчанию

Я неверно что то не понимаю, но какие циклы!? циклить запросы и закидывать ими сервер? Оо

Может я не правильно растолковал суть вопроса. Мне необходимо 1-м запросом получить 10 строк из тиблицы т.е. наложив на запрос (Limit 10 или Limit 20, 10 и т.д.) и тем же запросом получить сколько всего строк содержит таблица.
Это бы здорово уменьшило нагрузку на сервер, можно ли это как то реализовать? или только посылать второй запрос?
lacost вне форума Ответить с цитированием
Старый 19.01.2011, 17:56   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
как получить количество строк подходящих под этот запрос не делая лишнего запроса типа
В Какой СУБД пишешь? Если это T-SQL то там есть переменка м.м.м... @@ROWCOUNT кажись... Которая возвращает кол-во записей последнего запроса.
Да в PL/SQL тоже аналогичная есть, и в остальных СУБД должна быть.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.01.2011, 18:34   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

присоединяюсь к уточняющим вопросам Stiletа...

В чём именно выполняется 1-й запрос (в клиенте? ) ?
Количество записей нужно получить ДО самого запроса, или ПОСЛЕ него?
Если ДО - то выполняйте запрос select count(*) ... where вашиусловия
Если ПОСЛЕ - то обычно есть серверная переменная, где хранится количество выбранных записей, или, если запрос выполняется на клиенте, то в датасете можно получить количество записей...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.01.2011, 20:17   #7
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Отвечаю за TC (так как понял вопрос я).

есть некий запрос с огрничением вывода (limit)
Select * from table where filed=value limit 10
Как получить число записей с таким же условием НО без ограничения (limit 10) не используя дополнительного запроса.
Select сщгте(*) from table where filed=value
мой ответ был уже высказан. l
imit 10 это дополнительное условие и все что отсюда следует.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 20.01.2011, 11:06   #8
lacost
Пользователь
 
Регистрация: 25.03.2007
Сообщений: 67
По умолчанию

Всё это необходимо для вывода кол-ва страниц.
Т.е. усть таблица отображающая листинг базы + навигация по страницам. Вот для навигации и нужно знать кол-во записей в таблице. Просто думал что есть способ не посылать доп зарос чтобы подсчитать кол-во страниц. Запросы выполняет сервер средствами php. Спасибо за ответы.

P.S. Считать кол-во записей циклом - нафиг, нафиг, нафиг! Для примера оператор count(*) в таблице где есть 10 000 000 записей работал 3 сек, на обычной машине, не сервере. В пхп цикл из 16 000 итераций занимает порядка 8 минут всё на той же машине.
lacost вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчитать количество букв "А" в предложении и общее количество букв.В тексте из файла несколько строк. kvas91 Общие вопросы C/C++ 3 14.11.2010 16:51
Получить количество записей с определенным значением RamireZ БД в Delphi 7 04.06.2010 07:12
Как получить количество столбцов из выборки ssdm Java Базы данных (JDBC, JPA, Hibernate) 1 25.01.2010 19:21
Как получить из TVirtualStringTree хоть какую-то информацию? Текст, количество строк? TwiX Общие вопросы Delphi 4 05.12.2009 20:21
Количество строк delphin100 Общие вопросы Delphi 2 26.03.2009 11:58