Outoverlay
@Outoverlay

Как создать такой запрос к mysql?

SELECT `id_post`, `time` FROM `posts` GROUP BY `id_post` WHERE `time` BETWEEN FROM_UNIXTIME($min) AND FROM_UNIXTIME($max_time); Проблема в GROUP BY `id_post`, и прекрасно понимаю почему, но не хватает опыта сформировать верно, как можно полученное значение SELECT `id_post`, `time` FROM `posts` GROUP BY `id_post`, использовать к WHERE ?
  • Вопрос задан
  • 224 просмотра
Решения вопроса 1
profit
@profit
Разработка | Оптимизация. Telegram: @evzavyalov
GROUP BY пишется после WHERE

ДОБАВИЛ:::
select tab.*
  from ( SELECT `id_post`, `time` 
               FROM `posts` 
              GROUP BY `id_post` ,  `time` 
           ) tab
 where tab. `time` BETWEEN FROM_UNIXTIME($min) AND FROM_UNIXTIME($max_time);
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@dmitryKovalskiy
программист средней руки
1) Учитывая что 'time' не группируется - в некоторых СУБД такая запись вернет ошибку. Какое время выводить-то если id_post одинаковых будет 15 и все с разным временем?
2) Сначала WHERE, потом GROUP BY
Ответ написан
@mihelsonkk
nginx, mysql, unix
https://ru.wikipedia.org/wiki/Having_%28SQL%29
если я Вас правильно понял, where Вам здесь не нужен.
Можете на обычном языке сформулировать, что Вы хотите получить в результате запроса?
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Если есть несколько записей с одинаковым `id_post`, то в `time` при группировке будет взято значение из одной из записей, сказать из какой именно невозможно.
Ну и после GROUP BY можно использовать HAVING, но не WHERE.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы