SQL-Select gesucht
-
Hi!
Ich möchte folgendes in einem SQL-Statement formulieren:
IF TABELLE1.WERT1 = 'X'
AND TABELLE2.PK1 = TABELLE1.PK1 nicht vorhanden
AND TABELLE2.PK1 = TABELLE1.FK2 nicht vorhandenWie würde das idealerweise aussehen?
WERT1 ist ein String, PK1 Primärschlüssel und FK1 FremdschlüsselDabei möchte ich den PK1 als Rückgabe haben.
Mein Ansatz dafür:
select PK1
from TABELLE1
where WERT1 = 'X'
except
select PK1
from TABELLE2da fehlt aber noch die Bedingung für das zweite AND. Ich weis nicht recht wie ich das umsetzen soll.
Vielen Dank!
Gruß
Dudeldu
-
Sowas vielleicht?
SELECT PK1 FROM TABELLE1 t1 WHERE NOT EXISTS( SELECT 1 FROM TABELLE2 t2 WHERE t2.PK1 = t1.PK1 ) AND NOT EXISTS( SELECT 1 FROM TABELLE2 t2 WHERE t2.PK1 = t1.FK2 )
-
Hi, danke für die Antwort!
Hatte gehofft mit EXCEPT und ohne NOT EXIST auszukommen (Das NOT EXIST hat den Zugriffspfad in einem vorherigen SQL-Statement, wo ich nur mit einem NOT EXIST/EXCEPT gearbeitet habe vermasselt und lief deutlich langsamer).
Gruß
Dudeldu
-
Im Prinzip das selbe nur IMO schöner zu lesen (und für sehr doofe Server vielleicht auch besser zu optimieren):
SELECT PK1 FROM TABELLE1 t1 WHERE PK1 NOT IN (SELECT t2.PK1 FROM TABELLE2 t2) AND FK2 NOT IN (SELECT t2.PK1 FROM TABELLE2 t2)
-
Danke! Werde Anfang nächster Woche das mal Testen.