2016-10-13 3 views
0

ich eine Abfrage, die wie folgt aussieht:Oracle äußere Join-Syntax

select * 
from find fsc, 
     let lf, 
     cust cus, 
     STRIKE ist 
WHERE fsc.id = lf.id 
AND  ist.ID_old = fsc.ID_old 
AND  lf.cust_id = cus.cust_id(+) 

Ich weiß (+) ist alte Syntax für einen Join, aber ich bin nicht sicher, was es tatsächlich ist diese Abfrage zu tun. Kann jemand dies erklären und diese Abfrage ohne das (+) in der where-Anweisung anzeigen, indem eine modernere Joinsyntax verwendet wird?

+0

die '(+)' ist alte Syntax für einen 'OUTER JOIN' oder 'LEFT JOIN'. Hält alle Datensätze aus der Haupttabelle (Die ohne das Pluszeichen) und alle übereinstimmenden Datensätze aus der Detailtabelle (die mit dem Pluszeichen) – sagi

+0

Danke! hat viel geholfen – SJR59

Antwort

1

Ich glaube, Sie dies wünschen:

select * 
from find fsc join 
    let lf 
    on fsc.id = lf.id join 
    STRIKE ist 
    on ist.ID_old = fsc.ID_old left join 
    cust cus 
    on lf.cust_id = cus.cust_id; 

ehrlich zu sein, die äußere Verknüpfung ist wahrscheinlich nicht nötig. Warum hätte lf eine cust_id, die nicht gültig ist? Die einzige vernünftige Möglichkeit ist, wenn der Wert NULL ist.

+0

Danke! hat mir sehr geholfen – SJR59