|
|||
|
Выборки MySQL с подсчетомИногда возникают ситуации, требующие подсчета кол-ва вхождения определенного идентификатора в таблице. Например, в таблице комментариев (comments) нужно подсчитать, количество сообщений каждого пользователя. Данные в таблице хранятся следующим образом: id, user_id, message 1 1 сообщение 1 2 3 сообщение 1 3 3 сообщение 2 4 2 сообщение 1 5 2 сообщение 2 6 2 сообщение 3 7 2 сообщение 4 8 4 сообщение 1 9 5 сообщение 1 Для определения всех комментариев, написанных каждым из пользователей в определенном интервале дат (после начала 2013 года), используется группировка, с таким запросом: SELECT COUNT(id) AS count, user_id FROM db_comments WHERE create > "2012-12-31 23:23:59" GROUP BY user_id'; Результат будет таким: user_id, count 1 1 3 2 2 4 4 1 5 1 Чтобы узнать, кто из пользователей написал по одному комментарию, посылаем в базу такой запрос: SELECT COUNT(id) AS count, user_id FROM db_comments WHERE create > "2012-12-31 23:23:59" GROUP BY user_id HAVING count = 1'; Результат обработки запроса к БД MySQL будет таким: user_id, count 1 1 4 1 5 1 Оператор MySQL HAVING можно считать аналогом оператора WHERE, но только для конструкции группировки GROUP BY. Чтобы узнать количество записей для каждого из пользователей, написавших минимальное кол-во комментариев, потребуется вложенная выборка: SELECT COUNT(id) AS count, user_id FROM db_comments WHERE create > "2012-12-31 23:23:59" GROUP BY user_id HAVING count = (SELECT count(id) FROM '.DB_TABLE_TRACKING.' WHERE create > "2012-12-31 23:23:59" GROUP BY db_comments ORDER BY count(id) ASC LIMIT 1) Результат обработки запроса к БД MySQL будет таким: user_id, count 1 1 4 1 5 1 Соответственно, чтобы узнать максимальное количество комментариев и их авторов, во вложенном запросе сортировку ASC нужно изменить на DESC. Опубликовано: 2013/01/31
HTML-код ссылки на эту страницу:
<a href="https://petrenco.com/mysql.php?txt=163" target="_blank">Выборки MySQL с подсчетом</a> 28524
Добавить комментарий
|