2012-08-13 75 views
0

我有兩張通知表和一張friend_list表。一個通知tbale是指具有通知信息的人員創建並輸入的信息,以及所有第二個標識哪個朋友已閱讀通知。能夠檢索由用戶創建的通知僅顯示給用戶的朋友。但是現在我想從名爲notification read的第二張表中顯示未讀給用戶朋友的通知。數據庫查詢獲取用戶朋友閱讀的通知

我所做的查詢(從通知+ FRIEND_LIST表)

$sql3=mysql_query("select n.*,f.friend_id,f.uid,f.status from notification n,friend_list f where f.uid='$id' and f.status='1' and n.title_text='Global Notification' and n.user_id in ('$id' , f.friend_id) and n.owner_user_id=f.friend_id order by n.time_stamp desc"); 

現在如何獲得通知的朋友讀?

第二個表是

uid (friend_id) 
notification_id 
is_read 

現在我想用我現有的查詢來獲取被朋友未讀通知的查詢。

回答

0

讓我們supose說:

  • '$id'是用戶加薪通知
  • n.user_id的ID是提高通知
  • n.owner_user_id用戶是接收通知

查詢是用戶:

select 
    n.*,f.friend_id,f.uid,f.status 
from 
    notification n 
inner join 
    friend_list f 
     on n.owner_user_id=f.friend_id 
inner join 
    notification_read nr 
     on nr.notification_id = n.notification_id and 
      nr.uid = f.friend_id 
where 
    f.status='1' and 
    n.title_text='Global Notification' and 
    n.user_id = '$id' and 
    nr.is_read = 0 
order by n.time_stamp desc 

編輯由於新的OP評論。

+0

我們使用3代三個表在這裏,通知+ FRIEND_LIST(我給查詢)和notification_read(我希望所有的3人組合的查詢) – 2012-08-13 10:34:25

+0

固定。請注意,我沒有全部的數據模式細節。這是一種方法。你可以根據你的需求做出最後的改變。如果出現問題,請尋求更多幫助。 – danihp 2012-08-13 13:53:05

0

試試這個:

SELECT n.*,f.friend_id,f.uid,f.status 
FROM notification n 
    INNER JOIN friend_list f 
     ON n.owner_user_id = f.friend_id 
    INNER JOIN second_table s 
     ON f.friend_id = s.uid AND 
      n.notification_id = s.notification_id 
WHERE f.uid='$id' AND 
     f.status='1' AND 
     n.title_text='Global Notification' AND 
     n.user_id IN ('$id' , f.friend_id) AND 
     s.is_read = 0 
ORDER BY n.time_stamp DESC; 
+0

我們在這裏使用3個三表,通知+ friend_list(我給出的查詢)和notification_read(查詢我想要的所有3個組合) – 2012-08-13 10:34:54

+0

nope不工作,它沒有得到任何通知。不能我得到一個單獨的查詢來獲取未讀的通知,因爲我已經做了一個查詢來根據朋友得到通知,我只是需要那些未讀的使用第二個表 – 2012-08-13 10:46:44

相關問題