2012-04-03 24 views
-1

私は解決できなかった問題がありました。テキスト、senderid、recipientid、日付などのいくつかのフィールドを持つ私のSQLデータベースにメッセージテーブルがあります。受信者IDと送信者IDによるSQLグループのメッセージ

新しい機能は、Facebookのようなメッセージをグループ化することです。さんが言ってみましょう:

  1. 、ユーザAがユーザBに
  2. ユーザーBが
  3. ユーザAに返信されたメッセージを送信していること
  4. ユーザDは、ユーザAにメッセージ
  5. を送信しているユーザーCにメッセージを送信しています

したがって、ユーザAはB、C、Dの3つのメッセージをボックス内に持つ必要があります。CがAに返信していなくても(1,2)、Cは(3)、D includes(4) 3)、AはD(4)ではない。

シンプルgroup by (senderid)group by (recipientid)十分ではありません。..

どのように可能ということは?

+0

「A」には4つのメッセージがありませんか? – vansimke

+0

メッセージボックスには3つのメッセージが必要ですが、メッセージ(1)をクリックするとメッセージ(1)にメッセージ(2)が表示されます(facebookなど)。ユーザーAとのすべてのメッセージのタイムライン<=> X – ahmet2106

答えて

0

UNIONの結果:

select boxuser, count(*) from 
(select senderid boxuser from messages 
union all 
select recipientid boxuser from messages) 
group by boxuser 
0

あなたが達成するために探しているものを全くわからないが、リストページに:receipientidかのSenderID = LOGGEDINUSER

のいずれかの異なるユーザーを選択

SQLクエリ

これは、ログインしたユーザーが通信しているすべてのユニークユーザーをリストします。

ザ・利用者Xのためのメッセージのページで:

すべての行を選択し

SQLクエリのいずれか(receipientid = XとのSenderID = LOGGEDINUSER)または(のSenderID = Xとreceipientid = LOGGEDINUSER)

この意志2人のユーザー間のすべてのメッセージの対応をリストします。

関連する問題