2011-09-13 5 views
3

PHP MySQLのテーブルをユーザメッセージを注文:メッセージPHP MySQLのグループと一緒に

id sender receiver  time_sent   Message SendDel RecDel 
1  1   3  2011-08-17 14:00:00  [text]  0  0 
2  3   1  2011-08-17 15:00:00  [text]  0  0 
3  2   4  2011-08-18 14:19:28  [text]  1  0 
4  4   2  2011-08-18 15:19:28  [text]  0  0 

目的は、送信側、受信側に基づいてメッセージ最高値メッセージ(MAX)とグループを検索することです。したがって、メッセージID 1と2は一緒にグループ化され、ID 3と4は一緒にグループ化されます。

例:= 2がわからない、なぜ私のクエリは一緒にグループのすべてのメッセージをしません

id sender receiver  time_sent   Message SendDel RecDel 
4  4   2  2011-08-18 15:19:28  [text]  0  0 

イムを返す必要がありますユーザーIDでログインし。質問は以下のとおりです。

SELECT id, sender, receiver, MAX(time_sent), MAX(message) 
FROM Messages 
WHERE sender='$userid' OR receiver = '$userid' 
Group By sender,receiver 
Order BY time_sent DESC 

すべての解決策はありますか?

答えて

5

あなたが欲しい:

だから、メッセージIDの1と2だろう一緒にグループとidの3と4希望のグループ一緒に。

これを実現するには、group by句でいくつかの魔法を実行する必要があります。

SELECT id, sender, receiver, MAX(time_sent), MAX(message) 
FROM Messages 
WHERE sender='$userid' OR receiver = '$userid' 
Group By (if(sender > receiver, sender, receiver)) 
     , (if(sender > receiver, receiver, sender)) 
Order BY time_sent DESC 
+0

2番目のif文 '(送信者<=受信者、受信者、送信者)'はありませんか? – psycho

+0

@ Johan:あなたのクエリは機能しませんでした。 >>>>「送信者>受信者、送信者、受信者の場合」 、(送信者<=受信者、送信者、受信者の場合) – Bourne

+0

@Bourneが修正されました。 – Johan

関連する問題