- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Нужно из базы выбрать необходимые строки и посчитать сколько их всего. Это можно решить двумя запросам, но можно ли это сделать одним запросом?
SELECT * FROM `trade`
SELECT COUNT( * ) FROM `trade`
на подобие такого
SELECT * , COUNT( * ) AS sum FROM `trade`
по-идее нет, разве что какой-то очень сложный на вложынных запросах...
Если нужные строки, используй WHERE. По твоему вопросу не совсем понятно что нужно.
Приведи таблицу и четкую задачу.
Первый запрос у тебя выбирает все строки, а второй их считает. Т.е. если тебе нужно их посчитать - то первый - не нужен.
выбрать все строки и пересчитать в скрипте их количество.
все равно по циклу будете гонять.
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(*) будет давать число строк по каждой группе.
А вообще - сформулируйте чётче что надо сделать.
Вообще, странный вопрос. Можно как-то подробней?
Уверен, можно обойтись
SELECT COUNT(*) FROM table WHERE.....
Один минус - запросы подобного вида оптимизатор MySQL не любит и изначально, в любом случае, будет перебирать всю таблицу. И только потом отсечет все, что не попадает под условие. Если База маленькая и посещаемость не вилика - сойдет. Если нагрузка нехилая - лучше сделать запрос иначе.
Специально для этого существует SQL_CALC_FOUND_ROWS и SELECT FOUND_ROWS();
Но использовать его нужно только тогда, когда возникает задача описанная в первом посте и вы действительно запросите все эти строки.
Не нужно использовать эту функцию для оценки числа подходящих записей, которые вы не будете выводить на странички - у вас получится DLE, а записи на самом деле все равно будут подниматься и оцениваться сервером.
Если объем данных не такой большой, чтобы удобство программирования превалировало над потенциальной проблемой производительности, то отчего бы не использовать.