2015-03-08 91 views
1

基於使用此SQL查詢,我在此處找到我期望的結果基於user_id。當我將這添加到查詢時,我最終得不到結果。
從一個表中查找不存在於另一個表中的記錄並在第三個表中忽略

SQL - find records from one table which don't exist in another

我有三個表,一個是我的客戶端的內容,二是哪些內容客戶同意並使用,第三個是內容被忽略。

我期待抓住的結果是沒有被使用或不被忽略的內容。

available_content table 
+----+ 
| id | 
+----+ 
| 1 | 
+----+ 
| 2 | 
+----+ 
| 3 | 
+----+ 
| 4 | 
+----+ 
| 5 | 
+----+ 

posted_content table 
+----+----------+ 
| id | user_id | 
+----+----------+ 
| 1 | 123  | 
+----+----------+ 
| 2 | 123  | 
+----+----------+ 
| 3 | 456  | 
+----+----------+ 

ignored_content table 
+----+----------+ 
| id | user_id | 
+----+----------+ 
| 5 | 123  | 
+----+----------+ 
| 1 | 456  | 
+----+----------+ 
| 2 | 456  | 
+----+----------+ 

SELECT a.id 
FROM available_content AS a 
LEFT OUTER JOIN posted_content AS b 
ON (a.id = b.id) WHERE b.id IS NULL AND b.user_id = '123' 

results 
+----+ 
| id | 
+----+ 
| 3 | 
+----+ 
| 4 | 
+----+ 

回答

2
SELECT a.id 
FROM available_content a 
LEFT OUTER JOIN posted_content b ON (a.id = b.id AND b.user_id = '123') 
LEFT OUTER JOIN ignored_content c ON (a.id = c.id AND c.user_id = '123') 
WHERE b.id IS NULL AND c.id IS NULL 
+0

哦扣..它是那麼容易。 – Tim 2015-03-08 20:51:30

相關問題