2016-04-01 2 views
0

Я пишу скрипт, чтобы проверить, не видны ли новости несколькими пользователями. Чтобы проверить новые новости, которые никогда не проверялись этим пользователем. Я думаю, что служба продолжает просить сервер давать новости, которые Пользователь никогда не читал. Но я не знал, как писать об этом (я использовал декартовский продукт, но это не сработало). В других словах, как проверить, не читал ли пользователь эту новость и дал мне способ предоставить уведомление. Если кто-нибудь может мне помочь Пожалуйста? Это три таблицы в моей базе данных: пользователи, новости и видели.Дать совпадение между тремя таблицами 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 который запрашивает пользовательский_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

Смежные вопросы