2011-04-25 53 views
0

我需要在以下查詢中添加一個連接,它將把messages_message表加入到messages_threads表中,並從messages_messages中的最近一行返回'body'和'time'字段,其中messages_message.threadid = messages_threads.id。返回來自MySQL的最新消息?

對不起,這是如此令人困惑,我不知道怎麼說呢!這是我目前的查詢 - 除了'body'和'time'字段之外,它正確地提取所有內容。

SELECT 
    messages_threads.id AS threadid, messages_threads.name AS recipientsname, 
    senderid, username AS sendername, pictures.url AS senderpicture 
FROM 
    messages_recipients 
    JOIN messages_threads 
     ON messages_threads.id = messages_recipients.threadid 
    JOIN users 
     ON users.id = messages_threads.senderid 
    JOIN pictures 
     ON messages_threads.senderid = pictures.userid 
     AND pictures.profile = 1 
WHERE messages_recipients.userid = $userid 

回答

3

您可以添加messages_message表的子查詢這將返回1個一行每一個線程。例如:

SELECT 
    messages_threads.id AS threadid, messages_threads.name AS recipientsname, 
    senderid, username AS sendername, pictures.url AS senderpicture 
FROM 
    messages_recipients 
    JOIN messages_threads ON messages_threads.id = messages_recipients.threadid 
    JOIN users ON users.id = messages_threads.senderid 
    JOIN pictures ON messages_threads.senderid = pictures.userid AND pictures.profile = 1 
    JOIN (SELECT threadid, MAX(id) AS postid FROM messages_message GROUP BY threadid) t ON message_threads.id = t.threadid 
    JOIN messages_message ON t.threadid = messages_message.threadid AND t.postid = messages_message.id 
WHERE messages_recipients.userid = $userid 
1

我想你會需要通過集團的身體和時間也... 或u能更多的指定查詢..

+0

嗨,我還沒有添加連接到messages_messages,但我試圖決定如何。你是否提出了一個小組的子查詢? – Walker 2011-04-25 11:25:09

+0

如果您知道在message_thread表字段中計數或檢查所需的話,那麼需要。否則有很多簡單的解決方案。 – 2011-04-25 11:29:42

+0

Juddas答案工作,你有一個更簡單的解決方案?感謝您的幫助! – Walker 2011-04-25 11:37:24