2011-08-15 37 views
0

我有3個表,
jos_messages> 'MESSAGE_ID(PK)', '信息', 'from_user_id', '至用戶ID'MySQL的聯接表

jos_message_thread> 'THREAD_ID PK','MESSAGE_ID FK 」, 'from_user_id', 'to_user_id'

jos_users> 'USER_ID(FK)', '姓名', '化身'

我需要使與此表的查詢,以在一個結果返回數據,數據如下: 最後插入的消息(jos_messages),名字和消息發件人的頭像(jos_users) res ULT應該是這樣的:

消息: 「你好,這是最後插入的訊息話題」

姓: 「LEDIF」

化身: 「http://a.com/a.png」

我現在擁有的是這個查詢,但問題是,返回的消息不是插入的最後一條消息。

SELECT jmt.from_user_id, jm.message, ju.firstname, ju.avatar 
FROM jos_messages_thread AS jmt 
LEFT JOIN jos_messages AS jm ON jm.message_id = jmt.message_id 
LEFT JOIN jos_comprofiler AS ju ON ju.user_id =  jmt.from_user_id 
WHERE jmt.to_user_id ='$user_id' 
AND jmt.thread_owner ='$user_id' 
GROUP BY jmt.from_user_id 

有沒有辦法在左連接查詢的中間命令jm.message_id?使它像這樣:

LEFT JOIN jos_messages AS jm ON jm.message_id = (LAST INSERTED) jmt.message_id 

謝謝!順便說一句我不擅長英語,對不起,如果我的問題不是很清楚。

+0

message_id是否自動遞增?如果是這樣,那麼最後插入的消息將是最大的ID –

+0

@Hunter McMillen是的。這就是我期待的,但它沒有發生。 – janusbalatbat

+0

然後你還需要包含一個'ORDER BY'語句。如果你做'ORDER BY message_id DESC LIMIT 1',會給你最大的ID –

回答

0

即使有辦法做到這一點,您也不需要在連接中插入ORDER BY。在整個查詢結束時只需要ORDER BY jm.message_id DESC,並使用LIMIT 1將結果限制在第一行。

0
LEFT JOIN jos_messages AS jm ON jm.message_id = (Select jthread.message_id from jos_messages_thread Order By jthread.message_id desc Limit 1) 
+0

我試過了,但是它爲所有行返回一個消息數據。 – janusbalatbat