2016-06-27 3 views
0

다른 열이있는 여러 테이블이있는 경우 모두 하나의 레코드로 추가하고 싶습니다. 그러나 이들 중 하나에 레코드가 없으면 다른 테이블에서 검색된 다른 레코드는 표시되지 않습니다. 나머지 표의 결과를 표시하려면 어떻게합니까? 예를 들어 하나의 카탈로그가있는 세 개의 테이블이 있습니다. 표 A에는 레코드가없고 표 B와 C에는 레코드가 없다고 가정하십시오. 이 테이블 (표 B 및 C)에 대한 결과를 어떻게 표시 할 수 있습니까? 표 A에 기록이없는 경우에도. 예를 들어오라클의 여러 테이블에서 행 검색 [하나 이상의 테이블이 비어 있음]

: 이제

Table A 
RECN 
FNAME 

TABLE B 
RECN 
DATE 

TABLE C 
RECN 
ATTR1 

Table CAT 
RECN 
LABEL 

SELECT TA.*,TB.*,TC.* 
FROM 
(SELECT A.RECN, A.FNAME, CAT.LABEL 
FROM A, CAT 
WHERE A.RECN= CAT.RECN) TA, 
(SELECT B.RECN, B.DATE, CAT.LABEL 
FROM B, CAT 
WHERE B.RECN=CAT.RECN) TB, 
(SELECT C.RECN, C.ATTR1, CAT.LABEL 
FROM C, CAT 
WHERE C.RECN=CAT.RECN) TC 

, 나는 빈 행을 취득하고,하지만 난 값을 포함하는 테이블의 값을 표시해야합니다.

당신의 도움이

+0

샘플 입출력 데이터를 표시 할 수 있습니까? 또한 조인 구문이 이상하게 보입니다 ('A.RECN = CAT.RECN'). –

답변

0

사용 LEFT JOIN에 미리 감사드립니다. 또한 문제는 아니지만 하위 쿼리는 필요하지 않습니다. 사실 JOIN 구문이 잘못되었습니다. 다음은 쿼리의 모양입니다.

SELECT A.RECN, A.FNAME, CAT.LABEL, 
     B.RECN, B.DATE, CAT.LABEL, 
     C.RECN, C.ATTR1, CAT.LABEL 
FROM TA LEFT JOIN 
    TB 
    ON B.RECN = CAT.RECN LEFT JOIN 
    TC 
    C.RECN = CAT.RECN; 
관련 문제