2012-01-15 83 views
0

我正在Facebook的消息之後創建一個消息系統模型。 郵件收件箱是線程化的,但我的查詢存在問題,無法查看消息以及線程中交換的其他消息。 db表看起來像這樣。Facebook風格的消息收件箱

消息

  • 中間
  • SEQ
  • created_on
  • CREATED_BY

messag_recips

  • 中間
  • SEQ
  • UID
  • 狀態

注:MID列是消息ID。將每個初始消息看作是一個線程的開始。我決定擁有一個主線程(MID),然後在其中包含消息 - 而不是具有所有父/子的唯一消息ID,這些都是由SEQ(序列號)列定義的。其餘的很自我解釋。 created_by和所有後續的用戶標識都是數字標識,可能指向其他地方的不同用戶標識。最後需要注意的是主鍵基於MID和SEQ - 每個MID/SEQ永遠不會有多個條目。 STATUS列 - 這將是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 2012-01-15 21:27:16