我試圖重建一個現有的消息系統,使其看起來類似於Twitter的DM服務。目前,我只顯示未讀郵件到我的用戶,但我想顯示在一個單一的「線」 2個用戶之間發送這樣的消息:查詢在「線程」視圖中獲取最近的消息
這裏是我當前的數據庫結構和一些樣本數據: http://sqlfiddle.com/#!2/574e3/1/0
我試着建立查詢一步一步的分解,但我很困惑。 這是我所採取的步驟的列表:
1.獲取之間的「對話」的兩個用戶
SELECT * FROM uc_user_messages
WHERE uc_user_messages.user_id_1 = 1 OR uc_user_messages.user_id_2 = 1
2顯示的最後一條消息之間發送的郵件列表兩個用戶
SELECT * FROM uc_user_messages
WHERE uc_user_messages.user_id_1 = 1 OR uc_user_messages.user_id_2 = 1
ORDER BY timestamp DESC
3組談話由USER_ID(顯然這將是一個用戶的名字和一幫在加入機生產線應用程序)。
SELECT * FROM uc_user_messages
WHERE uc_user_messages.user_id_1 = 1 OR uc_user_messages.user_id_2 = 1
GROUP BY uc_user_messages.user_id_1 AND uc_user_messages.user_id_2
ORDER BY timestamp DESC
而這正是我卡住了...問題是,在兩個用戶之間的對話發送的第一條消息將顯示,而不是最新的消息:http://sqlfiddle.com/#!2/942fb/2
什麼我能做些什麼嗎?希望我不必做任何重大的數據庫設計更改。任何幫助是極大的讚賞。
乾杯,
喬爾
我可能誤解了這個問題,但OP似乎對涉及user_id號碼1的消息感興趣。那麼最後一條消息(「消息答覆」)如何相關? – 2013-05-10 17:12:53
@JamesHolderness你不會誤解它。這只是我沒有額外的條件來篩選特定的'User_ID'。上面的查詢將顯示多個用戶的所有對話的最新消息。一個簡單的'AND 1 IN(USER_ID_1,USER_ID_2)'將只給出包含'user_id = 1'的對話結果[這是一個DEMO](http://sqlfiddle.com/#!2/942fb/24) – 2013-05-10 17:15:11
OK,I想想我現在正在做什麼。我只是一個白癡。 – 2013-05-10 17:17:42