Left-outer-join (Verknüpfung zwischen den drei Tabellen)?
Habe ich eine Haupttabelle, die ich muss Daten aus. Ich habe einen left outer join, wo sich die Felder entsprechen 40% der Zeit. Und dann habe ich noch eine Verknüpfung, in dem ich entsprechend die Daten aus Tabelle A mit.
Dies ist die SQL, die in pseudo-code. Diese Abfrage wird nicht funktionieren.
-- Dies ist der Teil, den ich tun will, aber nicht funktioniert.
UND H. COL3 = A. ZUSTAND????
Arbeite ich mit IBM DB2.
SELECT DISTINCT
APP_NO as app_no,
A.STATE as state
...
... Fields
...
FROM
TABLE_A A
LEFT OUTER JOIN
TABLE_B HIST
ON
HIST.COL1 = A.COL1
, TABLE_C B
LEFT OUTER JOIN
TABLE_D H
ON
H.COL2 = B.COL2
-- This is the part I want to do but doesn't work.
AND
H.COL3 = A.STATE????
WHERE
A.BRANCH = 'Data'
- warum doesnt es funktioniert? Welche Fehler sind Sie immer?
- In DB2, bekomme ich die folgende Fehlermeldung. Wenn ich entfernen Sie die problematische Zeile, dann funktioniert es. Fehler: SQL0338N Einer ON-Klausel im Zusammenhang mit einem JOIN-operator oder einer MERGE-Anweisung ist nicht gültig. SQLSTATE=42972 (Stand:42972, Native-Code: FFFFFEAE)
- Bitte gehen Sie über diesen link. techpint.com/programming/how-sql-joins-works. Ich habe gezeigt, das Beispiel mit dem Skript enthalten. Er enthält genau den gleichen Fall, dass Sie Fragen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, Sie könnten wieder zu schreiben es wie folgt (aber ich konnte Lesen, und deine Aussage falsch)
Auch die IBM doco auf dieser Fehler besagt:
Einer ON-Klausel im Zusammenhang mit einem JOIN-operator oder einer MERGE-Anweisung ist nicht gültig.
Erklärung:
Spaltenverweise in einer ON-Klausel darf nur Spalten referenzieren die von Tabellen, die in den Anwendungsbereich der ON-Klausel.
So, ich könnte falsch sein, es sieht nur wie die AUF fehlerhafter Klausel wenn outer joinen "H. COL3 = A. STATE" ist außerhalb des Bereichs der On-Klausel, da die Tabelle Eine nicht in diesem Umfang.
Was passiert, wenn man das "UND H. COL3 = A. STATE" in deiner WHERE-Klausel?