Я не знаю, как написать синтаксис SQL для получения последней записи (согласно последнему сообщению и не отвечает).
Мой стол
+-------------------+-----------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+-----------------------+------+-----+---------+----------------+
| notification_id | mediumint(8) unsigned | NO | PRI | NULL | auto_increment |
| user_id | mediumint(8) unsigned | NO | | NULL | |
| notification_msg | text | NO | | NULL | |
| notification_date | int(11) unsigned | NO | | NULL | |
| private_message | tinyint(1) unsigned | NO | | 0 | |
| has_replied | tinyint(1) unsigned | NO | | 0 | |
| reply_id | mediumint(8) unsigned | NO | | 0 | |
+-------------------+-----------------------+------+-----+---------+----------------+
В основном для каждого многопоточного уведомления, он должен получить последнюю запись каждой записи уведомления и проверить, если has_replied
равно 0
, если это 0, то он должен вернуть его, чтобы PHP мог прочитать, есть ли уведомление, которое не было ответа. Так вот, он должен возвращаться так (псевдо):
+--------------+-----+-----+
| username | 1 | 4 |
| username2 | 0 | 2 |
+--------------+-----+-----+
Где указывается второй столбец, был или нет ответ на последнее сообщение.
Мой текущий синтаксис SQL (работает, но не получает последнюю запись и, если она отвечает):
SELECT n.*,
m.user_id,
m.username
FROM notifications n
INNER JOIN members m ON n.user_id = m.user_id
WHERE private_message = 1
AND reply_id = 0
ORDER BY has_replied ASC,
notification_date DESC