[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Количество строк в запросе
Воитель
Ранее определял количество строк в запросе таким способом
'SELECT COUNT(*) FROM '.$p_q['tables'].$p_q['conditions']


Но потом запрос усложнился и ни как не пойму как посчитать количество строк в запросе:
SELECT DISTINCT cashbox.* FROM `cashbox_action`, `cashbox` WHERE cashbox_action.name LIKE '%а%' AND cashbox.nomer=cashbox_action.cashbox

Предполагаю что нужно двигаться в направлении вложенных запросов, но не пойму как
SELECT COUNT(*) FROM (SELECT DISTINCT cashbox.* FROM `cashbox_action`, `cashbox` WHERE cashbox_action.name LIKE '%а%' AND cashbox.nomer=cashbox_action.cashbox)


_____________
Вечно учусь.
kaww
А что нужно посчитать? Если cashbox_action, то таблица cashbox вообще не нужна в запросе.
Или может cashbox_action для cashbox?
select count(*) from cashbox inner join cashbox_action on cashbox.nomer=cashbox_action.cashbox where cashbox_action.name LIKE '%а%' group by  cashbox.nomer
Воитель
Нужно посчитать сколько строк получилось по таблице cashbox без повторов.

_____________
Вечно учусь.
Воитель
А как это сделать через вложенный запрос.
Потому что это будет использоваться для динамического создания запроса.
Что-то типа:
'SELECT COUNT(*) FROM '.$p_q['tables'].$p_q['conditions']

По этому предложенная структура мне не подойдёт.

_____________
Вечно учусь.
Воитель
Я не смогу сделать такую группировку:
group by  cashbox.nomer

Так как не обладаю данными по какому именно столбцу группироваться.

Мне приходят запросы вида:
SELECT DISTINCT cashbox.* FROM `cashbox_action`, `cashbox` WHERE cashbox_action.name LIKE '%а%' AND cashbox.nomer=cashbox_action.cashbox


_____________
Вечно учусь.
Kusss
http://habrahabr.ru/post/64655/
может это поможет ? Посчитать количество строк в основном запросе
Воитель
Пока такой вариант
mysql_num_rows($result);

но тоже не желателен так как данные всё таки приходят из MySQL

Что-нибудь более оптимизированное.

_____________
Вечно учусь.
Воитель
Цитата (Kusss @ 12.10.2015 - 16:28)
http://habrahabr.ru/post/64655/
может это поможет ? Посчитать количество строк в основном запросе

Может есть более красивый вариант.

_____________
Вечно учусь.
sergeiss
Воитель, а ты можешь объяснить, что именно ты хочешь получить? Почему нужно обязательно подсчитать количество строк до выполнения запроса и почему mysql_num_rows($result); тебе не нравится?

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
DedMorozzz
Цитата (sergeiss @ 12.10.2015 - 20:44)
Почему нужно обязательно подсчитать количество строк до выполнения запроса и почему mysql_num_rows($result); тебе не нравится?

Например пагинация...

По сабжу делай отдельный запрос на каунт. Так получишь кол-во строк

_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
Воитель
Да всё верно для пагинации.

Можно поподробнее: По сабжу делай отдельный запрос на каунт.

_____________
Вечно учусь.
DedMorozzz
$count = "SELECT COUNT(DISTINCT(`field`)) FROM table WHERE ..."


_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
Воитель
Я так уже пробовал, что-то не получилось у меня. Подумал так нельзя делать. Сегодня ещё попробую.

_____________
Вечно учусь.
Воитель
Не получается В первоначальном запросе:
SELECT DISTINCT(cashbox.*) FROM table WHERE ...

Скопки вокруг cashbox.* не ставятся, точнее нельзя.

_____________
Вечно учусь.
DedMorozzz
Конкретное поле выбери, а не все поля таблицы

_____________
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.