Я достаточно много погуглил, но, похоже, не могу понять это правильно ...
У меня есть три таблицы:
comm_messages:
- room_id:integer
- created_at:datetime
comm_visitors:
- room_id:integer
- user_id:integer
- updated_at:datetime
Я хочу выяснить для данного user_id, сколько новых сообщений (тех, которые были созданы после того, как пользователь посетил комнату)?
Пример
Если у меня есть такие данные:
comm_messages:
+---------+------------------+
| room_id | created_at |
+---------+------------------+
| 1 | 20.11.2018 |
| 1 | 20.12.2018 |
| 2 | 21.12.2018 |
| 3 | 24.12.2018 |
| 4 | 19.05.2018 |
+---------+------------------+
comm_visitors:
+---------+---------+------------+
| user_id | room_id | updated_at |
+---------+---------+------------+
| 1 | 1 | 03.11.2018 |
| 1 | 3 | 25.12.2018 |
| 1 | 4 | 11.05.2018 |
| 2 | 1 | 01.01.2019 |
| 2 | 2 | 03.11.2018 |
| 2 | 4 | 03.11.2018 |
+---------+---------+------------+
Для user_id = 1
я должен получить 3
и для user_id = 2
Я должен получить 2
.
Моя текущая попытка вращалась вокруг чего-то вроде этого:
SELECT COUNT(comm_messages.id)
FROM comm_messages LEFT JOIN comm_visitors
ON comm_messages.room_id = comm_visitors.room_id
WHERE comm_visitors.user_id = 1
AND comm_visitors.updated_at > comm_messages.updated_at;
Но это не хорошо ..