MySQL. Нужна помощь с запросом.

[Удален]
558

Нужно из базы выбрать необходимые строки и посчитать сколько их всего. Это можно решить двумя запросам, но можно ли это сделать одним запросом?

SELECT * FROM `trade`

SELECT COUNT( * ) FROM `trade`

на подобие такого

SELECT * , COUNT( * ) AS sum FROM `trade`

rtyug
На сайте с 13.05.2009
Offline
263
#1

по-идее нет, разве что какой-то очень сложный на вложынных запросах...

Спалил тему: Pokerstars вывод WMZ, etc на VISA 0% или SWIFT + Конверт USD/GBP,etc (net profit $0,5 млрд) (https://minfin.com.ua/blogs/94589307/115366/) Monobank - 50₴ на счет при рег. тут (https://clck.ru/DLX4r) | Номер SIP АТС Москва 7(495) - 0Ꝑ, 8(800) - 800Ꝑ/0Ꝑ (http://goo.gl/XOrCSn)
EFFENBERG
На сайте с 04.07.2008
Offline
38
#2

Если нужные строки, используй WHERE. По твоему вопросу не совсем понятно что нужно.

Приведи таблицу и четкую задачу.

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

TF-Studio
На сайте с 17.08.2010
Offline
334
#3

выбрать все строки и пересчитать в скрипте их количество.

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

Всё ещё лучший способ заработка для белых сайтов: GoGetLinks (https://www.gogetlinks.net/?inv=fahbn8).
L
На сайте с 07.12.2007
Offline
351
#4

1.

$res = mysql_query("SELECT * FROM `trade` WHERE условие");

mysql_num_rows($res); - количество строк, полученных в запросе выше

2. "SELECT COUNT(*) FROM `trade` WHERE условие" - даст кол-во строк, попадающих под условие

3. SELECT ID, COUNT(*) AS sum FROM `trade` WHERE условие - такой запрос тоже будет работать, только надо явно указать нужные поля перед COUNT(*), а не писАть *. И если после WHERE используется GROUP BY - то COUNT(*) будет давать число строк по каждой группе.

А вообще - сформулируйте чётче что надо сделать.

vitroot
На сайте с 16.12.2010
Offline
22
#5

Вообще, странный вопрос. Можно как-то подробней?

Уверен, можно обойтись

SELECT COUNT(*) FROM table WHERE.....

Один минус - запросы подобного вида оптимизатор MySQL не любит и изначально, в любом случае, будет перебирать всю таблицу. И только потом отсечет все, что не попадает под условие. Если База маленькая и посещаемость не вилика - сойдет. Если нагрузка нехилая - лучше сделать запрос иначе.

Администратор Linux, FreeBSD (http://pro.vitroot.ru) Skype: vit190685
N
На сайте с 06.05.2007
Offline
419
#6

Специально для этого существует SQL_CALC_FOUND_ROWS и SELECT FOUND_ROWS();

Но использовать его нужно только тогда, когда возникает задача описанная в первом посте и вы действительно запросите все эти строки.

Не нужно использовать эту функцию для оценки числа подходящих записей, которые вы не будете выводить на странички - у вас получится DLE, а записи на самом деле все равно будут подниматься и оцениваться сервером.

Если объем данных не такой большой, чтобы удобство программирования превалировало над потенциальной проблемой производительности, то отчего бы не использовать.

Кнопка вызова админа ()

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий