[SQL] was bedeutet oder was macht

„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

Vielen Dank. (o.T.)
:smile: