2012-01-15 25 views
0

Facebookのメッセージの後にメッセージングシステムモデルを作成しています。 メッセージ受信トレイはスレッド化されていますが、メッセージやスレッド内で交換されたその他のメッセージを表示するためのクエリに問題があります。 dbテーブルはこのようになります。Facebookのメッセージの受信トレイ

メッセージ

  • 半ば
  • 配列
  • CREATED_ON
  • CREATED_BY

messag_recips

  • 半ば
  • 配列
  • UID
  • 状態

注:MID列がメッセージIDです。各初期メッセージをスレッドの開始と考えてください。すべての親/子であるユニークなメッセージIDを持つ代わりに、私は1つのメインスレッド(MID)を持っていて、その中にメッセージを持つことに決めました。これらはすべてSEQ(シーケンス番号)列で定義されています。残りはかなり自己説明的です。 created_byおよびそれ以降のすべてのユーザーIDは、別のユーザーIDを指す数値IDです。最後に、主キーがMIDとSEQに基づいていることです。MID/SEQごとに複数のエントリを持つことはありません。 STATUS列 - 私が欲しい、削除

のアクティブのための新しい、AのためのNのこと(または読み取り)し、Dは、これが私のクエリ

$sql = "select m.mid, m.seq, m.created_on, m.created_by, m.body, r.status from message_recips r 
       inner join messages m on m.mid=r.mid and m.seq=r.seq 
       where r.uid='$uid' and m.mid='$mid' and r.status in ('A', 'N')"; 

ですが、それは、現在のユーザーに送信されたメッセージのみを返します。現在のユーザによって送信されたメッセージを返す。どのように私はクエリを変更する必要がありますか?

答えて

0

現在のユーザーに送信されたメッセージと、現在のユーザーによって送信されたメッセージ... OR関係を取得しようとしているようです。

はこれを試してみてください:

where (r.uid='$uid' OR m.created_by='$uid') and m.mid='$mid' and r.status in ('A', 'N')"; 
+1

おかげで、それは完全に働きました – MrFoh

関連する問題