SQL Join帮助将另一个表中的成员包含到搜索结果中

时间:2013-02-21 05:58:21

标签: sql sql-server

此查询仅返回填写问题11042并回答“是”的主记录。很好没有概率。但是,此主要成员可能在其下分配了组成员,这些成员可能还需要进入此搜索查询。然而,他们不回答问题11042所以不在字段t2表中。然而,他们在另一个表grpMems t3中,比方说,它也加入了id。所以我的问题是我如何显示两个问题,那些回答问题是肯定的并且因此在t2表中的人,以及在搜索结果的另一个t3表中的组成员?

select t1.id,t1.firstname,t1.lastname,t2.field1,t2.field2
from names t1
inner join fields t2 on t1.id=t2.id and t2.field1=2388 and t2.field2=11042 and t2.field3='Yes' 
where 1=1
<cfif searchby>
and t1.firstname like '%#searchFIRST#%'
</cfif>
order by t1.lastname,t1.firstname

1 个答案:

答案 0 :(得分:0)

使用两个左连接并要求其中至少一个具有数据:

SELECT ...
FROM names t1
LEFT OUTER JOIN fields t2 ON ...
LEFT OUTER JOIN another t3 ON ...
WHERE t2.id IS NOT NULL OR t3.id IS NOT NULL

如果这些关系中的任何一个是多对多的,那么你需要做一些事情来清除重复的内容。


使用联盟:

SELECT ...
FROM names t1
INNER JOIN fields t2 ON ...
UNION ALL
SELECT ...
FROM names t1
INNER JOIN another t3 ON ...

如果您有重复项,您将需要使用UNION来清除它们或执行其他操作。