0

此查询仅返回填写问题 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
4

1 回答 1

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 ...

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

于 2013-02-21T06:01:18.107 回答