@dhscor

Как реализовать фильтрацию данных по сгруппированным полям?

Подскажите, пожалуйста, как лучше реализовать следующую идею:
Я хочу вывести диалоги, которые длились больше одного часа, и, которые имеют 10 или более сообщений. Как это можно было бы лучше сделать:
1 вариант: одним большим SQL запросом, который бы подсчитывал все это. (не знаю только, возможен ли такой запрос. Я использую MySQL 5.7)

2 вариант: вывести в массив нужные диалоги, подсчитать с помощью PHP, где больше 10 сообщий и диалог старше одного часа, и вывести их потом вторым sql-запросом.

А может есть другие варианты, о которых я не знаю?
  • Вопрос задан
  • 52 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT `dialog_id`
  FROM `messages`
  GROUP BY `dialog_id`
  HAVING COUNT(*) >= 10 
    AND MIN(`timestamp`) + INTERVAL 1 HOUR < MAX(`timestamp`)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы