Ich habe 3 Tabellen Schüler, Einschreibungen und Klassen. Ich möchte jeden Schüler und den Abteilungscode jeder Klasse auflisten (Abteilungscode ist in Klassen) einschließlich die Schüler, die keine Klassen belegt haben (Abteilungscode wäre in diesem Fall leer). Dies ist aufgrund zukünftiger Berechnungen erforderlich, die ausgeführt werden.So kombinieren Sie natürliche Join und linken äußeren Join in SQL
Hier ist, wie ich darüber nachgedacht habe. Die folgende Abfrage ist ein Join links von Studenten und Einschreibungen, so dass ich Studenten umfassen, die in allen Klassen nicht
eingeschrieben habenselect s.B#, s.firstname, e.classid
from students s, enrollments e
where s.B#=e.B#(+)
Diese Abfrage wie erwartet funktioniert.
Als nächstes werde ich Mitglied Einschreibungen und Klassen, damit ich die entsprechende dept_code für jede Einschreibung sehen:
select B#, dept_code
from enrollments natural join classes
Dies wird auch wie erwartet funktioniert.
Wenn ich versuche, die beiden zusammen zu bringen, obwohl ich in Probleme laufen
select s.B#, s.firstname, dept_code
from students s, (enrollments e natural join classes)
where s.B# = e.B#(+)
Der Versuch, diese Abfrage auszuführen erhalte ich die Fehlermeldung:
ORA-25156: old style outer join (+) cannot be used with ANSI joins
Kann jemand bitte erklären, was hier vor sich geht?
Auch Oracle empfiehlt Syntax –