0

列 SOME_ID を持つテーブル SOME_TABLE があります。列 SOME_TABLE_SOME_ID (FOREIGN KEY)、TYPE、CONTENT を持つテーブル ANOTHER_TABLE もあります

SOME_TABLE の 1 つのレコードに対して、ANOTHER_TABLE に 1 つまたは 2 つのレコードがあります。

以下のように表示したいと思います。

SOME_ID, CONTENT_TYPE_A, CONTENT_TYPE_B

私はSQL文を持っています:

SELECT
ST.SOME_ID,
TYPE_A.CONTENT CONTENT_TYPE_A, 
TYPE_B.CONTENT CONTENT_TYPE_B
FROM SOME_TABLE ST
LEFT OUTER JOIN ANOTHER_TABLE TYPE_A
ON ST.SOME_ID=TYPE_A.SOME_TABLE_SOME_ID 
LEFT OUTER JOIN ANOTHER_TABLE TYPE_B
ON ST.SOME_ID=TYPE_B.SOME_TABLE_SOME_ID 
WHERE
TYPE_A.TYPE = 'A'
AND
TYPE_B.TYPE = 'B'

このクエリは、ANOTHER_TABLE に両方のレコードが存在する場合 (TYPE='A' および TYPE='B')、SOME_TABLE の結果のみを返します。

対応する SOME_TABLE レコードが ANOTHER_TABLE に 1 つのレコードしか存在しない場合にビューを取得するにはどうすればよいですか?

現在レコードがある場合、CONTENT_TYPE_A または CONTENT_TYPE_B に null 値を設定したいと考えています。

4

1 に答える 1

2

OR代わりに使用するのはどうですかAND

SELECT
ST.SOME_ID,
TYPE_A.CONTENT CONTENT_TYPE_A, 
TYPE_B.CONTENT CONTENT_TYPE_B
FROM SOME_TABLE ST
LEFT OUTER JOIN ANOTHER_TABLE TYPE_A
ON ST.SOME_ID=TYPE_A.SOME_TABLE_SOME_ID 
LEFT OUTER JOIN ANOTHER_TABLE TYPE_B
ON ST.SOME_ID=TYPE_B.SOME_TABLE_SOME_ID 
WHERE
TYPE_A.TYPE = 'A'
OR
TYPE_B.TYPE = 'B'
于 2012-10-31T16:13:23.780 に答える