2013-05-16 91 views
-1

我有以下3个表。我需要一个单一的查询,以便从表1选择如果任一个匹配记录在表2或表3中找到。有条件连接的SQL查询

表1: 的recordId, 的GroupID, 名称

表2: 的recordId(其是Table1.RecordID) 子ID, AFLAG

表3: 的GroupID(这是Table1.GroupID) 子ID, AFLAG

+2

那么你尝试过什么? – HLGEM

回答

1

这是相当简单的,只需使用左连接和匹配上的ID

SELECT t1.* FROM table1 t2 
    LEFT JOIN table2 t2 ON t1.RecordID = t2.RecordID 
    LEFT JOIN table3 t3 ON t1.GroupID = t3.GroupID 
    WHERE t2.SubID IS NOT NULL OR t3.SubID IS NOT NULL 

这应该让你更接近你的最终目标

1

布赖恩的帖子如此之快的最终连接表的存在! 或者......

select * 
from table1 
where (recordid in (select recordid from table2) ) 
OR (recordid in (select recordid from table3)) 
+1

+1。 。 。你的回答比较好。布赖恩可能会产生重复。 –

0

你的基本的查询看起来有点这样的事情,我想:

SELECT * 
    FROM Table1 T1 
    WHERE EXISTS (SELECT 1 FROM Table2 T2 WHERE T1.RecordId = T2.RecordId) 
     OR EXISTS (SELECT 1 FROM Table3 T3 WHERE T1.GroupId = T3.GroupId)