2012-06-27 3 views
-1

3 개의 테이블에서 데이터를 가져 오는 SQL 쿼리가 있습니다. table3의 열을 가져올 수 없습니다. 무엇이 문제일까요?SQL 조인 3 테이블 --- 내부 테이블에서 데이터를 가져 오지 않았습니다.

SELECT table1.col1  COUNTRY, 
    table2_alias1.col3 STATE, 
    table2.GEOG_LOCATION, 
    table2.GEOG_LOCATION_pRE, 
    table2.T2col4, 
    table2.T2col5, 
    TABLE3_ALIAS1.ZIP, 
    TABLE3_ALIAS1.T3col2, 
    TABLE3_ALIAS1.T3col3, 
    TABLE3_ALIAS1.T3col4 
FROM table1, 
    table2 table2_alias1, 
    table2, 
    (SELECT * 
     FROM table3 
     WHERE (col5 = 'XXX' 
        OR col5 = 'YYY') 
       AND col6 = 'ZZZ')TABLE3_ALIAS1 
     WHERE table1.col3 = 'AAA' 
       AND table1.col1 = table2_alias1.STATE 
       AND table2_alias1.STATE = table2.col7(+) 
       AND table2.STATE = TABLE3_ALIAS1.col6(+) 
ORDER BY 
2, 
4, 
10, 
9 

SAMPLE 출력

COUNTRY|STATE| GEOG_LOCATION | T2COL2 | T2col3 | t2col4 | zip | T3col2 |T3col4 

USA  CA  LosAngls  LosAngls-1 0  y  90001 
USA  CA  SanFrans  SanFrans-4 0  y  94101 
USA  CA  Freemont  Freemont-A 0  n  94538 

만 제 5 열 우편 포함하지 않는 이후 (즉, 표 3에서 온)를 포함한 데이터 열을 개 (가장 IMP DATA 의미있는 COL 명칭 강조) 쿼리가 실행되는 데이터

RDBMS

TABLE1   TABLE2    TABLE3 

T1_COL1   GEOG_LOCATION   T3_COL1 
GEOG_LOCATION  T2_COL2  T3_COL2 
T1_COL3   GEOG_LOCATION_pRE  GEOG_LOCATION 
T1_COL4   T2_COL4  T3_COL4 
T1_COL5   T2_COL5  T3_COL5 
T1_COL6   T2_COL6  T3_COL6 
T1_COL7   T2_COL7  T3_COL7 
T1_COL8   T2_COL8  T3_COL8 
T1_COL9   T2_COL9  T3_COL9 
T1_COL10     T3_COL10 

세 TABL es는 열 startihg와 HHH로 연결됩니다. 그들은 동일한 데이터를 공유합니다. FFF로 시작하는 열 (표 2의 세 번째 열)은 table2의 첫 번째 열 (HHH_col1)과 재귀 관계가 있습니다.

+1

데이터 및 원하는 출력을 게시하십시오. – RedFilter

+0

RDBMS주세요. ... –

+0

오타 : 당신은 table2_alias1.col3 = table2.col7가 <말했다 - 당신은 아마 내가 옳은 무슨 table3_alias1 –

답변

2

는 그 자체에 중첩 된 쿼리를 실행 해보십시오 :

 SELECT * 
    FROM table3 
    WHERE (col5 = 'XXX' 
       OR col5 = 'YYY') 
      AND col6 = 'ZZZ' 

데이터를 다시받을 수 있나요?

또한, 안전을 위해, 테이블 이름과 위의 쿼리에서 열 이름을 접두어로 가치가있을 수도 있습니다.

그런 다음, 표 2에 합류하려고 : 조회 한 번에 한 단계를 재 구축 등

 SELECT * 
    FROM table3, table2 
    WHERE (col5 = 'XXX' 
       OR col5 = 'YYY') 
      AND col6 = 'ZZZ' 
      AND table2.col3 = table3.col6(+) 

...와, 데이터가 누락 될 때까지. 그렇다면 어느 단계가 범인인지 알 수 있습니다 ...

+0

예, 데이터를 다시 가져옵니다. – Raghu