Я делаю систему обмена сообщениями. Сообщения бывают двух разных видов.
- Первые сообщения имеют
title
и NULL
для related
столбца.
- Вторые сообщения относятся к одному из первых сообщений, которые не имеют
title
и имеют идентификатор родительского сообщения для столбца related
. (которые известны как ответ / ответ / ответ)
Вот моя структура таблицы:
// messages
+----+----------+------------------+-----------+-------------+-------------+---------+
| id | title | content | sender_id | receiver_id | date_time | related |
+----+----------+------------------+-----------+-------------+-------------+---------+
| 1 | titel1 | whatever1 | 1 | 3 | 1521097240 | NULL |
| 2 | | whatever2 | 3 | 1 | 1521097241 | 1 |
| 3 | | whatever3 | 1 | 3 | 1521097242 | 1 |
| 4 | title2 | whatever4 | 1 | 4 | 1521097243 | NULL |
| 5 | title3 | whatever5 | 1 | 5 | 1521097244 | NULL |
| 6 | | whatever7 | 4 | 1 | 1521097246 | 4 |
| 7 | title4 | whatever8 | 1 | 4 | 1521097246 | NULL |
+----+----------+------------------+-----------+-------------+-------------+---------+
/*
related column: it is NULL for the first message and the id of the parent for othesrs.
Теперь мне нужно посчитать количество сообщений, которые пользователь А отправил и не получил ответа на этот вопрос в прошлом году.
Например, число сообщений, отправленных пользователем user_id = 1
, на которые не получен ответ, равно 1
. Потому что он отправил сообщение пользователю user_id = 5
и еще не ответил.
Как мне посчитать это число?
SELECT count(1)
FROM messages
WHERE sender_id = 1
AND date_time > UNIX_TIMESTAMP(DATE_SUB(now(), INTERVAL 1 YEAR))
Мой запрос считает все отправленные сообщения. Как я могу считать только неотвеченные?