2011-06-20 22 views
1

PHP/MySQLのメッセージングシステムの会話概要ページを作成しようとしています。基本的には、iPhoneのテキスト/ SMSの概要ページのように見えます。メッセージを送信または受信した他のユーザーによってグループ化されたメッセージ。最新のメッセージ(送信または受信)を最初に(降順)表示します。メッセージのMySQLクエリが必要です(送信または受信された)最新のメッセージが最初に表示され、ユーザー別にグループ化されます

messages table 

id | sender_id | receiver_id | datetime | message 
+1

これまでに試したことはありますか? – alex

+0

はい、あります。私が持っている問題は、同じフィールドとしてsender_idとreceiver_idをグループ化することです。 CONCAT()は機能しません。 – SomeRandomDude

答えて

0

トリッキーな問題です。次のソリューション

SELECT id,sender_id,receiver_id, 
CASE WHEN sender_id >= receiver_id THEN 
    CONCAT(CAST(sender_id AS CHAR),'|', CAST(receiver_id AS CHAR)) 
ELSE 
    CONCAT(CAST(receiver_id AS CHAR),'|' CAST(sender_id AS CHAR)) 
END AS participants , 
`datetime`,message from messages 
ORDER BY participants,`datetime` 

にあなたは二つの組み合わせが実体であることを要求sender_idの-receiver_id関係を表し、余分な計算フィールドを持っている。この方法を試してみてください。計算されたフィールドによる注文は、おそらくある時点で遅くなるでしょう。参加者情報を格納するためにテーブルに実際の余分なフィールドを作成することを検討することをお勧めします。

関連する問題