Entwickler-Ecke
Datenbanken - Left Join mit Auschluss der null-Werte
Nico80 - Mi 30.05.07 14:29
Titel: Left Join mit Auschluss der null-Werte
Hallo,
ich habe ein Probelm mit einem Left-Join über 2 Tabellen...
SQL-Anweisung
1: 2: 3: 4:
| SELECT A.*, B.* FROM TabelleA A Left outer join TabelleB B on (A.id=B.id) WHERE B.id is null |
Ich möchte nun in der Ergebnismenge die Null-Werte von der linken Tabllen (-->left join) filtern.
Aber ich habe das Gefühl das die WHERE-Bedingung schon im JOIN berücksichtigt wird.
Bitte um Hilfe und Danke für Antworten!!!!
Ralf Jansen - Mi 30.05.07 20:53
ähm ... beschreib nochmal was du willst kann dir nicht wirklich folgen.
Z.B. ist die 'linke' Tabelle in deinem Select für mich Tabelle A nach deiner sonstigen Beschreibung scheinst du aber eher Tabelle B zu meinen.
Wenn ich nur dein SQL betrachte vermute ich du möchtest alle Sätze aus Tabelle A bekommen die nicht in Tabelle B zu finden sind. Das macht man dann eigentlich über einen Subselect mit EXISTS.
SQL-Anweisung
1: 2: 3: 4: 5:
| SELECT A.* FROM TabelleA A WHERE NOT EXISTS (SELECT * FROM Tabelle B WHERE A.ID = B.ID) |
Oder lieg ich daneben?
mkinzler - Mi 30.05.07 20:57
Was meinst du mit Null-Werte filtern?
Nico80 - Do 31.05.07 08:48
Ich möchte eine "not in"-Bedingung durch einen Left-Join ersetzen (wg Performance).
Die ursprüngliche SQL-Anweisung lautete:
SQL-Anweisung
1: 2: 3:
| SELECT A.* FROM TABELLEA A WHERE (A.XYZ not in (SELECT B.XYZ FROM TABELLEB B) |
Meine SQL Anweisung ist noch ein wenig komplizierter. Tabelle A ist ein Join über 2 Tabellen und Tabelle B ein Join über 3 Tabellen.
Habe ich jetzt nur als Beispiel etwas vereinfacht.
ZeitGeist87 - Do 31.05.07 10:34
Lös das Ganze doch über eine View...
Nico80 - Do 31.05.07 11:29
ZeitGeist87 hat folgendes geschrieben: |
Lös das Ganze doch über eine View... |
oder durch ne Stored Procedure.
Der SQl-Abfrage übergebe ich zusätzlich noch einige Parameter.
Dachte nur, das es vielleicht noch eine andere Lösung gäbe.
In anderen SQL-Dialekten können Joins auch Aliasnamen bekommen. Dann könnte ich direkt auf die ERgebnismenge zugreifen
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!