2016-04-01 4 views
0

私は、ニュースが複数のユーザーによって表示されているかどうかを確認するためのスクリプトを作成しています。私はサービスが、ユーザーが一度も読んだことのないニュースをサーバーに依頼し続けると思います。しかし、私はそれについて書く方法を知らなかった(私はデカルト製品を使用したが、うまくいかなかった)。 他の言葉では、ユーザーがこのニュースを読んでいないかどうかをチェックし、通知を提供する方法を教えてください。 誰かが私を助けることができる場合はどうですか? これは私のデータベースの3つのテーブルです:Users、News、およびSeen。3つのテーブル間でマッチさせるSQL

このユーザーのテーブルです:

User_ID | User_Name 
-------------------- 
1  | John 
2  | Carl 
3  | Tomas 
4  | Adam 
5  | Nancy 

とニュース表:

News_ID | News_Text 
-------------------- 
1  | Hello World 
2  | This is My car 
3  | I had Ate pizza 
4  | No Body Want Programming 
5  | C++ Programming 

また、これは見た表である:

ID | User_Id | News_Id 
--------------------------- 
1 | 1  | 2 
2 | 1  | 3 
3 | 4  | 1 
4 | 5  | 3 
5 | 1  | 4 

答えて

2

これは、すべてのNews_ID年代を取得する必要があります"UserIdYouCareAbout"が見えなかったというニュース(<UserIdYouCareAbout> wiあなたが照会しているUser_IDです)。多くは、これは

SELECT News.News_ID AS 'Unseen News ID' 
FROM News 
    LEFT JOIN Seen ON Seen.News_ID = News.News_ID AND Seen.User_ID = <UserIdYouCareAbout> 
WHERE 
    Seen.ID IS NULL 
+0

おかげで^ _^ –

0
SELECT * 
FROM News 
WHERE News_ID NOT IN (
    SELECT News_Id FROM Seen WHERE User_Id = <userID> 
) 
+0

おかげで動作します。 –

+0

あなたの答えは、問題を解決する方法について説明してください、それは誰もがより多くの明快さとし、将来の参照のためのソリューションを理解するのに役立ちますたくさんの細かい – Aziz

関連する問題