2012-10-31 3 views
0

테이블 SOME_TABLE에 SOME_ID 열이 있습니다. 또한 SOME_TABLE_SOME_ID (외래 키), TYPE, CONTENT 열이 포함 된 테이블 ANOTHER_TABLE이 있습니다.다른 테이블에서 2 테이블 및 2 레코드에서보기

SOME_TABLE의 레코드 하나에 대해 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 모두 기록 유형 (해당하는 경우이 쿼리는 SOME_TABLE에 대한 결과를 반환

= ' A '및 TYPE ='B ').

해당 SOME_TABLE 레코드에 대한보기를 얻는 방법은 ANOTHER_TABLE의 레코드 하나만 존재합니까?

지금 레코드가있을 때 CONTENT_TYPE_A 또는 CONTENT_TYPE_B에 null 값을 갖고 싶습니다.

답변

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' 
관련 문제