你好,基本上我試圖複製Facebook的郵件系統到我的網站。獲取每個組中的最後一行?
這是邏輯... 「當用戶1創建新消息發送給用戶7時,將創建一個新的線程,thread_id爲1(表:messages_thread),並將新條目插入到表中:messages message_id 1(table:messages)。當user7 REPLYS到user1的消息,message2被創建,並且它的thread_id是1.
現在當用戶1創建一個NEW MESSAGE來發送給user7時,線程2被創建,並且當用戶7回覆thread2時,會創建消息4(希望你能得到邏輯)。
一切都很好。唯一的問題是我需要選擇線程中的最新消息,但是im ha詠麻煩與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 |
+------------+-----------+---------+-------+-----------------------------------------------------------+----------------+-----------------+-----+------------+
從結果產生,不會看起來像你的選擇各組的「最後」行?因爲您正在使用帶有DESC命令的SQL,它將爲每個線程選擇最後一行。 – Burhan 2011-02-25 08:18:07
是的,這就是我需要幫助,其安排組,我需要選擇每個組中的最後一行 – Kenny 2011-02-25 08:20:12
+1只是爲了格式化問題 – kevchadders 2011-02-25 08:40:59