Задать вопрос
@Muramidaza

Как правильно написать запрос на выборку данных в PostgreSQL?

Есть таблицы:

message:
1. id
2. user_id
3. message
4. response


sent_log:
1. id
2. message_id
3. sent_at - дата и время отправки


Связь - message.id = log_sent.message_id один ко многим

Как вытащить все сообщения которые не были отправлены или были отправлены ранее определенного времени?
  • Вопрос задан
  • 71 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
AshBlade
@AshBlade
Просто хочу быть счастливым
Используй LEFT JOIN с группировкой и having фильтром. Примерно так:

select m.id, min(s.sent_at) min_sent_time from message m 
      left join sent_log s on m.id = s.message_id
group by m.id
having min(s.sent_at) is null or min(s.sent_at) < :time;


Вместо :time подставь свое значение
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@nozzy
Symfony, Laravel, SQL, Python, Telegram
select
t1.*,
t2.sent_at
from message t1 
left join sent_log t2 on t2.message_id = t1.id
where t2.sent_at is null or t2.sent_at < here_datetime
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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