„select pca.PRODUCTID,p.UUID from productcategoryassignment pca, product p where pca.productid = p.uuid(+) and p.uuid is null;“
Ich bin kein Datenbankspezi und da frage ich mich doch
was das (+) genau macht?
Ohne (+) gibt es kein Ergebnis, mit (+) schon.
Aber warum?
Any help will be appreciated.
Gruss
Patrick
Hi,
Ich bin kein Datenbankspezi und da frage ich mich doch
was das (+) genau macht?
„outer join“. Die zugehörigen Ergebnisse der anderen Tabelle werden erst später hinzugefügt.
Ohne (+) gibt es kein Ergebnis, mit (+) schon.
Aber warum?
Weil der Join lauter NULLs produziert, die ohne outer weggefiltert worden wären. Am einfachsten kannst Du Dir das verdeutlichen, wenn Du Dir die zweite Tabelle leer vorstellst: Mit „WHERE t1.bla = t2.blub“ kriegst Du erst mal nichts, weil es keine Zeile gibt, auf die dies zutrifft. Durch das „(+)“ werden _erst_ die auszugebenen Zeilen ermittelt und _dann_ die Spalten der zweiten Tabelle hinzugefügt - auch wenn sie NULL enthalten.
Das ganze kann auch (bei geschicktem Einsatz) Geschwindigkeitsvorteile liefern, weil nicht die ganze Zeit über mehrere Tabellen betrachtet werden müssen, sondern erst am Schluß.
Cheatah