从一个表中查找不存在于另一个表中的记录并在第三个表中忽略

从一个表中查找不存在于另一个表中的记录并在第三个表中忽略

问题描述:

基于使用此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 | 
+----+ 

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