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 ?
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);
1) Учитывая что 'time' не группируется - в некоторых СУБД такая запись вернет ошибку. Какое время выводить-то если id_post одинаковых будет 15 и все с разным временем?
2) Сначала WHERE, потом GROUP BY
https://ru.wikipedia.org/wiki/Having_%28SQL%29
если я Вас правильно понял, where Вам здесь не нужен.
Можете на обычном языке сформулировать, что Вы хотите получить в результате запроса?
Для правильного вопроса надо знать половину ответа
Если есть несколько записей с одинаковым `id_post`, то в `time` при группировке будет взято значение из одной из записей, сказать из какой именно невозможно.
Ну и после GROUP BY можно использовать HAVING, но не WHERE.
Мне надо получить SELECT `id_post`, `time` FROM `posts` GROUP BY `id_post`, перед WHERE, по другому возвращает не верный результат. Можно в переменную занести вот это значение SELECT `id_post`, `time` FROM `posts` GROUP BY `id_post`?