2014-12-07 71 views
0

我有兩個表獲取日期的最新記錄了用戶在MySQL

user_conversation 
----------------- 
id 
from_user_id 
to_user_id 
item_id 
offer_detail_id 
message_type 
deleted_by_sender 
deleted_by_receiver 

user_conversation_reply 
----------------------- 
id 
from_user_id 
message_text 
sent_date 
conversation_id 
is_read 

每當一個新的對話開始對一個記錄將在user_conversation_table和信息輸入將被記錄在user_conversation_reply任何項目該會話的表格。同樣,可以在user_conversation_table中爲該對話添加不同的消息。

我想獲得用戶的所有對話。 (即from_user_id,to_user_id,item_id組合成一個組合),並且我需要獲得這個對話的最後一條消息。

user_conversation 

id  from_user_id  to_user_id  item_id 
1   8    2    1 

user_conversation_reply 

id  from_user_id  message  conversation_id sent_date 
1   8    helo    1   2014-12-07 
2   8   how r u    1   2014-12-08 

用戶可以是多個對話的一部分。所以,我想獲得用戶每次對話的最後一次對話信息。

我正在使用此查詢來篩選出用戶的記錄。

Select * from user_conversation where to_user_id = 2; 

請建議。

感謝, 費薩爾納西爾

回答

1

Assumming即user_conversation_reply.id是一個自增的主鍵,
最後消息始終最高id

SELECT * 
FROM (
    Select uc.id, max(ucr.id) max_ucr 
    from user_conversation uc 
    JOIN user_conversation_reply ucr ON ucr.conversation_id = uc.id 
    where uc.to_user_id = 2 
    GROUP BY uc.id 
) q 
JOIN user_conversation uc ON q.id = uc.id 
JOIN user_conversation_reply ucr ON q.max_ucr = ucr.id 
;