Das ist ein sogenannter outer join, d.h. Du bekommst für jeden Satz aus t1 einen Ergebnissatz, selbst wenn sich die referenz auf t2 nicht auflösen läßt. Oder anders gesagt: Wenn in t1 Sätze enthalten sind, deren Attribut in t2 nicht vorkommt, dann würden diese Sätze bei einem „normalen“ select nicht angezeigt, bei outer joins eben schon.
Vielleicht ist es mit einem Beispiel besser verständlich:
„lieferant“ soll Lieferanten beinhalten und „adresse“ deren Adresse, falls einen eingegeben wurde.
lieferant
soll das Format:
lieferantenid
name
adressid
haben und die zwei Sätze
(1,'N1', 1000)
und
(2,'N2',1001)
beinhalten.
adresse
ist definiert als:
adressid
ort
und enthält nur einen Satz, nämlich
(1000,'Berlin')
ein select ohne outer join:
select \* from lieferant l, adresse a
where l.adressid=a.adressid;
Ergebnis:
1,N1,1000,1000,Berlin
ein select mit outer join:
select \* from lieferant l, adresse a
where l.adressid=a.adressid(+);
Ergebnis:
1,N1,1000,1000,Berlin
2,N2,1001,null,null
Alles klar? Solltest Du noch Fragen haben, kannst Du mich gerna auch per e-mail kontaktieren.
GruĂź,
Martin
P.S.: Daß die Daten im Beispiel unsinnig siond ist mir schon klar, aber mir ist auf die Schnelle nix besseres eingefallen…
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]