Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle Outer Join mit Filterbedingung für die zweite Tabelle

Nein, es gibt keine Bedingung, unter der die Ergebnismengen unterschiedlich sein werden.

Aber Ihre Annahme "a.id = b.id(+) hat keine Bedeutung" ist nicht 100 % richtig. Es hat eine Bedeutung, weil sie den Join definiert, sonst wäre dies ein kartesisches Produkt von a und b mit allen Zeilen von a und b.name ='XYZ'.

Was keine Wirkung hat, ist der (+) , weil die Aussage "semantisch" falsch ist. Es macht keinen Sinn, sich auf die ID zu verbinden, aber auf den Namen zu verbinden.

Normalerweise wird so etwas gewünscht:

select  * from a,b where a.id =b.id(+) and b.name(+) = 'XYZ';

Kurzes Beispiel unter http://www.sqlfiddle.com/#!4/d19b4/ 15