2012-06-27 27 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 

樣本輸出(突出MOST進出口數據有意義的COL名稱)

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列具有數據和列包括ZIP(即來自表3)內外不包含當查詢運行任何數據

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由列starthhg與HHH連接起來。他們分享相同的數據。以FFF開頭的列(表2中的第3個)與table2的第1列(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