使用DB2转换Join-Oracle语法

使用DB2转换Join-Oracle语法,join,oracle11g,db2,Join,Oracle11g,Db2,我在Oracle中有一个带+运算符的查询 SELECT * FROM VEICOLO V, DISPOSIZIONE DIS, ASSEGNAZIONE ASS, UFFICIO U, USCITA US, FERMOVEICOLO FV, ( SELECT * FROM PARAMETRI WHERE DOMINIO='TIPOISTITUTO' ) P, COMUNE C1, MODELLO MO, MARCA MA,

我在Oracle中有一个带+运算符的查询

SELECT * FROM
VEICOLO V,
DISPOSIZIONE DIS,
ASSEGNAZIONE ASS,
UFFICIO U,
USCITA US,
FERMOVEICOLO FV,
(
    SELECT
        *
    FROM
        PARAMETRI
    WHERE
        DOMINIO='TIPOISTITUTO' ) P,
COMUNE C1,
MODELLO MO,
MARCA MA,
PARAMETRI P1,
PARAMETRI P2 WHERE MO.CODICE_MARCA = MA.CODICE_MARCA 
AND (MO.TIPOUTILIZZO = P1.CODIFICA OR P1.CODIFICA IS NULL) 
AND (P1.DOMINIO = 'TIPOUTILIZZO' OR P1.DOMINIO IS NULL) 
AND MO.TIPOMEZZO = P2.CODIFICA AND P2.DOMINIO = 'TIPOMEZZO' 
AND (U.TIPOISTITUTO = P.CODIFICA OR P.CODIFICA IS NULL) AND (C1.CODICE_COMUNE = U.CODICE_COMUNE OR C1.CODICE_COMUNE IS NULL) AND    V.CODICE_MODELLO=MO.CODICE_MODELLO AND (V.CODICE_VEICOLO=DIS.CODICE_VEICOLO(+))
AND DIS.STATODISPOSIZIONE (+)<> 'C' AND V.CODICE_VEICOLO=ASS.CODICE_VEICOLO (+)
AND ASS.DATAFINE (+) IS NULL AND ASS.CODICE_UFFICIO = U.CODICE_UFFICIO (+)
AND V.CODICE_VEICOLO = FV.CODICE_VEICOLO (+) AND V.CODICE_VEICOLO = US.CODICE_VEICOLO (+) AND FV.DATARITORNODISPONIBILITA (+) IS NULL
AND NOT US.DATAUSCITA (+) IS NULL AND V.TARGA LIKE '181%'
Oracle中的此查询返回5条记录

我在DB2中使用LEFT-JOIN/RIGHT-JOIN转换这个查询,但只返回1条记录。 问题在哪里

SELECT * FROM modello mo INNER JOIN marca ma ON mo.codice_marca = ma.codice_marca INNER JOIN veicolo v ON v.codice_modello = mo.codice_modello LEFT OUTER JOIN disposizione dis ON v.codice_veicolo = dis.codice_veicolo AND dis.statodisposizione <> 'C' LEFT OUTER JOIN assegnazione ass ON v.codice_veicolo = ass.codice_veicolo AND ass.datafine IS NULL LEFT OUTER JOIN fermoveicolo fv ON v.codice_veicolo = fv.codice_veicolo AND fv.DATARITORNODISPONIBILITA IS NULL LEFT OUTER JOIN uscita us ON v.codice_veicolo = us.codice_veicolo AND NOT us.datauscita IS NULL INNER JOIN parametri p2 ON mo.tipomezzo = p2.codifica LEFT OUTER JOIN parametri p1 ON mo.tipoutilizzo = p1.codifica AND p1.dominio = 'TIPOUTILIZZO' LEFT OUTER JOIN ufficio u ON ass.codice_ufficio = u.codice_ufficio LEFT OUTER JOIN ( SELECT * FROM PARAMETRI WHERE DOMINIO='TIPOISTITUTO') p ON u.tipoistituto = p.codifica RIGHT OUTER JOIN comune c1 ON c1.codice_comune = u.codice_comune WHERE p2.dominio = "TIPOMEZZO";

问题出在蒂波莫佐身上。正确的版本是“TIPOMEZZO”。 谢谢
文琴佐

1。使用Oracle测试带有显式联接的查询。2.逐个将每个+运算符转换为显式联接查询太大,无法搜索特殊错误。