我正在嘗試創建基於對話的消息傳遞系統。用相同的值分組記錄
我想將具有相同conversation_id的所有郵件分組,以便當我顯示當前會話列表時,您只能看到來自每個會話的最新郵件。
我可以將mysql查詢中的值分組嗎,還是我必須在php中完成它?
我正在嘗試創建基於對話的消息傳遞系統。用相同的值分組記錄
我想將具有相同conversation_id的所有郵件分組,以便當我顯示當前會話列表時,您只能看到來自每個會話的最新郵件。
我可以將mysql查詢中的值分組嗎,還是我必須在php中完成它?
感謝您的幫助,這是我結束了。
SELECT messages.*, messages_conversations.subject
FROM messages, messages_conversations
WHERE messages.to_user_id = '".$userid."'
AND messages_conversations.id = messages.conversation_id
GROUP BY messages.conversation_id
您可以將在MySQL查詢什麼樣T這樣的:
select * from table where conversation_id = id_here
這將讓所有具有conversation_id
設置爲id_here
,然後你可以使用PHP來對陣列/組的工作記錄。
它是數據庫中父子關係的基本示例。 每條消息都有唯一的id,iys也應該引用convo id的父鍵。
然後你可以得到給定convo id的最新消息。
我有一個名爲messages_convos的表,它具有字段id,主題和一個表,其中包含id,convos_id (來自messages_convos的id),from_user_id,to_user_id,message_content,date_sent,message_read – Ben 2010-04-05 07:40:59
準確地說,您已經正確完成了數據庫設計。那麼我無法理解你的問題。只需根據timsestamp或id字段(如果是自動遞增)從message_convo表中選擇一個給定id的消息表中的id即可。 從消息m,message_convo c中選擇*,其中c.id = m.convos_id和m.convo_id =參數[0]按時間戳順序desc limit 1排序。 – 2010-04-05 07:54:55
select m.convos_id, m.message_content from messages m
where m.id in
(select MAX(m1.id) from messages m1 GROUP BY m1.convos_id)
嗨Sarfraz,謝謝,但我需要檢索的所有對話,這將都具有不同的id所以不能指定確切的ID – Ben 2010-04-05 07:36:40
@Ben:那麼我認爲你可能需要使用GROUP BY SQL的關鍵字。 – Sarfraz 2010-04-05 07:57:32
謝謝,是的,我現在正在這個地方得到什麼地方。 SELECT消息。 *,messages_conversations.subject FROM messages,messages_conversations WHERE messages.to_user_id ='「。$ userid。」'GROUP BY messages.conversation_id – Ben 2010-04-05 08:00:21