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

2 つの左結合を使用し、そのうちの少なくとも 1 つにデータを含める必要があります。

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

繰り返しますが、重複がある場合は、 a を使用しUNIONてそれらを取り除くか、何か他のことをする必要があります。

于 2013-02-21T06:01:18.107 に答える