查看3张桌子

时间:2018-12-05 17:59:50

标签: sql sql-server

我正在做一个个人项目。 我有以下数据

tbl A

id,等等,等等

tbl B

id,id_2

tbl C

id_2,结果

如果tbl A中的id存在于tbl B中,并且Pass ='A',我要检查以下内容。

我可以编写一个查询来检查A中的键是否存在于B中。

SELECT * FROM tblA as a 
WHERE NOT EXISTS (
  SELECT * FROM tblB as b 
  WHERE a.id = b.id)

这很好用。

我还可以使用INNER JOIN来写一些东西

SELECT * 
FROM tabC 
 INNER JOIN tblB ON tblC.id2 = tblB.id2
 INNER JOIN tblA ON tblB.id = tblA.id
WHERE Result = 'A' GROUP BY id

但是我似乎无法弄清楚如何将这两个查询组合在一起。

1 个答案:

答案 0 :(得分:1)

您可以尝试以下操作

SELECT c.* 
FROM tabC c
 INNER JOIN tblB b ON c.id2 = b.id2
 INNER JOIN tblA a ON b.id = a.id
 WHERE Result = 'A' 
 and NOT EXISTS (
  SELECT 1 FROM tblB as b1 
  WHERE a.id = b1.id)