2016-08-06 106 views
0

我需要下面查詢中T3表格的所有記錄。 如何使用左連接語句解決我在oracle中的問題。如何在多個表格中使用左連接

SELECT COUNT(*) 

    FROM R 
    LEFT JOIN RD 
    ON (R.ID = RD.RES_INFO_ID) 
    LEFT JOIN RES 
    ON (R.SEL_EVL_RES_ID = RES.ID) 
    LEFT JOIN S 
    ON (S.ID = R.SEL_EVL_ID) 
    LEFT JOIN D 
    ON (RD.DEC_DET_ID = D.ID) 
    LEFT JOIN M 
    ON (S.EVL_MAS_ID = M.ID) 
    LEFT JOIN P_RES 
    ON (P_RES.PRS_ID = RES.PRS_ID) 
    LEFT JOIN P_MAS 
    ON (P_MAS.PRS_ID = M.PRS_ID) 
    LEFT JOIN P_EVL 
    ON (P_EVL.PRS_ID = S.PRS_ID) 
    LEFT JOIN P 
    ON (P.EVL_MAS_ID = M.ID) 
    LEFT JOIN DM 
    ON (DM.EVL_RES_INF_DET_ID = RD.ID); 

在此先感謝

+0

你想達到什麼目的?你爲什麼認爲左連接是要走的路? –

+0

通過使用此查詢,我可以實現他們評估並獲得分數的大部分人員。這些分數分配在T4表中。並且沒有得分或評價他們的人(原始人)在T3表中存儲。現在我想要除了prev查詢之外,新的需求也將被考慮(大部分沒有得分的人)。因爲這個,我認爲左連接是有效的。但我不知道。也許聯盟聲明是更好的soution! –

回答

0

如果需要從T3的所有記錄,那麼這應該是FROM子句中的第一個表。所有連接應該是LEFT JOIN s。我想你打算:

SELECT COUNT(*) 
FROM T3 R LEFT JOIN 
    T1 S 
    ON S.ID = R.SELF_EVALUATION_ID LEFT JOIN 
    T2 RD 
    ON RD.EVL_RESOURCE_INFO_ID = R.ID LEFT JOIN 
    T4 RES 
    ON R.SELF_EVALUATION_RESOURCE_IDRES.ID LEFT JOIN 
    T5 M 
    ON S.EVALUATION_MASTER_ID = M.ID LEFT JOIN 
    T6 D 
    ON RD.DECENCY_DETAIL_ID = D.ID LEFT JOIN 
    T7 P 
    ON P.EVALUATION_MASTER_ID = M.ID LEFT JOIN 
    T8 DM 
    ON DM.EVL_RES_INFO_DETAIL_ID = RD.ID; 

在未來,遵循一個簡單的規則:在FROM子句中決不使用逗號。 總是使用明確的JOIN語法與ON子句中的連接條件。