Wie left-outer-join von zwei Tabellen zu einer Dritten Tabelle
Ich habe drei Tabellen A, B und C (das Letzte ist das Ergebnis will ich)
A.id B.age C.id C.age result id age
1 5 1 5 1 5
2 6 2 0 null null
3 7 0 7 null null
4 8 4 8 4 8
5 9 5 9 5 9
Möchte ich ein outer-join von A und B zu C, so dass ich am Ende mit dem Ergebnis oben.
Wenn eine der Spalten fehlen von C, es sollte die Ausbeute null.
Wenn ich einen inner join:
select a.id, b.age where a.id = c.id and b.age = c.age
Hol ich 3 Zeilen zurück.
Ich will noch 5 Zeilen zurück. Ich bin mit IBM db2 v9 etwas.
Ich versuche, herauszufinden, mit den neueren left-outer-join-syntax, wie es gehe, aber ich bin nicht es zu sehen.
Ich kann sehen, wie ich es tun würde, in der alten sybase * der sybase - = - outer-join-syntax, aber ich kann nicht sehen, wie es den neuen Stil Weg.
Ist das überhaupt möglich?
Jemand vorgeschlagen, eine union der Hälfte der Ergebnisse der einzelnen. Gewerkschaften machen ein Durcheinander, scheint mir, ich sollte in der Lage sein zu tun, ein left-outer-join aus beiden Tabellen.
Helfen?
Danke.
- Was RDBMS die Sie verwenden?
RDBMS
steht für Relationale Datenbank-Management-System.RDBMS is the basis for SQL
, und für alle modernen Datenbanksystemen wie MS SQL Server, IBM DB2, Oracle, MySQL, etc... - ibm db2. Ich denke, es ist version 9 etwas.
- ... warum willst du die null-Werte? Sie sagen Ihnen nicht wirklich irgendwelche nützlichen Informationen.
- Denn dies ist ein sehr Vereinfachtes Beispiel, was ich tatsächlich Tue. Es gibt andere nützliche Informationen in der Ergebnismenge der größeren Abfrage, die ich tatsächlich Tue.
- Das einzige, was ich weiß zu arbeiten ist, um a+b in eine abgeleitete Tabelle, dann kann ich eine linke äußere Verknüpfung zwischen ab und c. Aber in der realen-Welt-situation, a und b sind beide schon wirklich kompliziert abgeleitete Tabellen. Ich hatte gehofft, für eine sql-syntax, was mir fehlte.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Meinst du das?
Ihre Frage ist nicht klar, ob Sie cross-join von A und B ist, oder ob B auch linken beigetreten:
Gibt es noch mehr mögliche Kombinationen...
Hier ist meine Lösung zu produzieren, die passenden Ergebnisse zu dem original-Beitrag. Nur die swap-Werte in A -, B -, und C-dummy-Tabellen mit den Beispielen zur Verfügung gestellt.
Edit:
Das gleiche Ergebnis ohne die Verwendung einer case-Anweisung:
Es ist eine späte Antwort auf diese Frage, aber die Abfrage unten sollte es tun.
Ich haben eine online-sqlfiddle bei http://sqlfiddle.com/#!3/07d74/5
Können Sie überprüfen, ob Ihre Anforderungen nicht mit den oben online sqlfiddle. Es gibt die genauen gleichen Ergebnisse, dass Sie gefragt haben.
Konnte ich nicht finden, ein online-tool für die Ausführung von DB2-Abfragen auch nach umfangreichen googeln, aber ich habe in IBM docs auf DB2-syntax cross join und left join, bevor Sie kommen mit dieser Abfrage. So sollte es funktionieren, in DB2, aber bitte lassen Sie mich wissen, wenn Sie irgendwelche Probleme.
Wenn Sie wissen, dass ein online-Werkzeug für DB2-lassen Sie es mich bitte wissen. Die sqlfiddle basiert auf Sql Server, da es keine option für DB2 auf sqlfiddle, aber wie ich sagte, die Abfrage ist kompatibel mit der DB2 als pro die Doku habe ich gelesen.
Den DB2-kompatibel-Abfrage ist wie folgt.
Sorry wegen unvollständiger und falscher "FULL JOIN" post.
Wäre es nicht: