Здравствуйте, в основном я пытаюсь скопировать систему обмена сообщениями, которую Facebook имеет на мой сайт.
Это логика ...
«Когда user1 СОЗДАЕТ НОВОЕ СООБЩЕНИЕ для отправки пользователю user7, создается новый поток с идентификатором потока равным 1 (таблица: messages_thread), и в таблицу добавляется новая запись: messages, это message_id 1 (таблица: сообщения). к сообщению user1, message2 создано, и оно имеет идентификатор_потока 1.
Теперь, когда пользователь 1 СОЗДАЕТ НОВОЕ СООБЩЕНИЕ для отправки пользователю 7, создается поток 2 и создается сообщение 3. Когда пользователь 7 отвечает на тему 2, создается сообщение 4 (надеюсь, вы понимаете логику.)
Все хорошо. Единственная проблема в том, что мне нужно выбрать самое новое сообщение в ветке, но у меня проблемы с SQL,
Этот sql, который у меня есть на данный момент ...
SELECT max(message_id) message_id, m.thread_id, m.body, m.user_id,m.to_id, m.message_status, m.new, m.date, u.id, u.displayname, u.username, u.profile_img
FROM messages m INNER JOIN users u ON u.id = m.user_id
WHERE to_id = 7 AND (message_status = 'unread' or message_status='read' or message_status='saved')
group by thread_id Order by message_id Desc LIMIT 10
производит это ...
+------------+-----------+----------------------+---------+-------+----------------+-----+------------+----+--------------+----------+-------------+
| message_id | thread_id | body | user_id | to_id | message_status | new | date | id | displayname | username | profile_img |
+------------+-----------+----------------------+---------+-------+----------------+-----+------------+----+--------------+----------+-------------+
| 6 | 2 | Really nice | 1 | 7 | read | 0 | 1298617367 | 1 | Kenny Blake | imkenee | 28_1 |
| 4 | 1 | Whats good with you? | 1 | 7 | read | 0 | 1298607438 | 1 | Kenny Blake | imkenee | 28_1 |
+------------+-----------+----------------------+---------+-------+----------------+-----+------------+----+--------------+----------+-------------+
Это хорошая, но одна небольшая проблема, она выбирает первый ряд в каждой группе, и я пытаюсь выбрать самый новый (последний ряд) в каждой группе
как я могу это сделать? вот таблицы. Спасибо!
Таблица: Messages_thread
+----+---------+----------------+-------------+-----------+---------------+-------------+------------+
| id | user_id | subject | from_status | to_status | from_s_delete | to_s_delete | date |
+----+---------+----------------+-------------+-----------+---------------+-------------+------------+
| 1 | 1 | Hey Kenny | unread | unread | 0 | 0 | 1298607438 |
| 2 | 7 | Check out this | unread | unread | 0 | 0 | 1298617344 |
+----+---------+----------------+-------------+-----------+---------------+-------------+------------+
Таблица сообщений
+------------+-----------+---------+-------+-----------------------------------------------------------+----------------+-----------------+-----+------------+
| message_id | thread_id | user_id | to_id | body | message_status | is_sent_deleted | new | date |
+------------+-----------+---------+-------+-----------------------------------------------------------+----------------+-----------------+-----+------------+
| 1 | 1 | 1 | 7 | Whats good with you? | read | 0 | 0 | 1298607438 |
| 2 | 1 | 7 | 1 | Nothing Kenny just chilling. Whats up with you though???? | read | 0 | 0 | 1298607473 |
| 4 | 1 | 1 | 7 | Just posted victor how are you man? | read | 0 | 0 | 1298607956 |
| 5 | 2 | 7 | 1 | Look at this poem.... | read | 0 | 0 | 1298617344 |
| 6 | 2 | 1 | 7 | Really nice | read | 0 | 0 | 1298617367 |
| 7 | 2 | 7 | 1 | Yea i know right :) | unread | 0 | 0 | 1298617383 |
+------------+-----------+---------+-------+-----------------------------------------------------------+----------------+-----------------+-----+------------+