forseti2003
Goto Top

ORACLE SQL

Hallo in die Runde,

mal eine Frage, ich hab da ein älteres SQL-Script das derzeit gut läuft aber etwas performance-lastig ist. Wollte ich nun überarbeiten, hierbei stoße ich auf diese Zeile:

WHERE
ATOUR.NR (+) = ATASEND.TOURNR

soweit mir bekannt, ist das ja nichts anderes wie ein RIGHT OUTER JOIN - also so umgesetzt:

RIGHT OUTER JOIN ATOUR
ON ATASEND.TOURNR = ATOUR.NR

Lass ich die Abfrage nun laufen, erhalte ich aber die Fehlermeldung: ORA-00904: "ATASEND"."TOURNR": ungültige ID
Kann aber eigentlich ja keine falsche ID sein, denn mit diesem Wert über die WHERE-Klausel läuft es ja ohne Fehler.

Hab ich da einen Denkfehler, oder kann man diese WHERE (+)-Klausel nicht mit einer JOIN-Klausel umsetzen?

Content-ID: 671846

Url: https://administrator.de/forum/oracle-sql-671846.html

Ausgedruckt am: 10.03.2025 um 14:03 Uhr

Penny.Cilin
Penny.Cilin 10.03.2025 um 12:28:34 Uhr
Goto Top
Hallo,

hast Du Dir Mal die Oracle SQL-Syntax angeschaut?
Diese weicht stellenweise von der MSSQL-Syntax ab.

Gruss Penny.
ukulele-7
ukulele-7 10.03.2025 aktualisiert um 12:50:19 Uhr
Goto Top
Von MSSQL ist ja gar nicht die Rede...

Ich nutze auch kein Oracle aber so wie ich das verstehe trifft das mit RIGHT OUTER JOIN zu, dein Beispiel müsste passen. Geht es eventuell als LEFT OUTER JOIN?

SELECT *
FROM ATOUR
LEFT JOIN ATASEND
ON ATOUR.NR = ATASEND.TOURNR
Forseti2003
Forseti2003 10.03.2025 um 13:04:51 Uhr
Goto Top
Zitat von @ukulele-7:

Von MSSQL ist ja gar nicht die Rede...

Ich nutze auch kein Oracle aber so wie ich das verstehe trifft das mit RIGHT OUTER JOIN zu, dein Beispiel müsste passen. Geht es eventuell als LEFT OUTER JOIN?

SELECT *
FROM ATOUR
LEFT JOIN ATASEND
ON ATOUR.NR = ATASEND.TOURNR

Ja, hab ich schon probiert, und auch hinter ON mal die Tabellen gedreht, mit und ohne OUTER, aber beharrt darauf, das mit Verwendung von JOIN ein ungültiger Identifier vorliegt.

Zitat von @Penny.Cilin:

Hallo,

hast Du Dir Mal die Oracle SQL-Syntax angeschaut?
Diese weicht stellenweise von der MSSQL-Syntax ab.

Gruss Penny.

Hallo Penny, ja die Beispiele von ORACLE hab ich schon geprüft, aber auch über den ORA-Fehler 00904 komme ich nicht explizit weiter, da ja die Tabellen und Spalten genauso heißen.
ukulele-7
ukulele-7 10.03.2025 um 14:01:15 Uhr
Goto Top
Seltsam. Kannst du mal die Tabellendefinition, zumindest die Spaltennamen und Primary Key Constraints etc. posten?
Forseti2003
Forseti2003 10.03.2025 um 15:07:15 Uhr
Goto Top
Zitat von @ukulele-7:

Seltsam. Kannst du mal die Tabellendefinition, zumindest die Spaltennamen und Primary Key Constraints etc. posten?

Hab es gefunden, hatte den Right Join an die falsche Position gesetzt, bzw. ein Inner Join war nachträglich in der Klausel noch drin, nachdem die alle schön an die richtigen Positionen geschoben wurde hat es geklappt.