Rouven: SUB Queri mit Bedingung im Sub Query

Beitrag lesen

Hi,

SELECT table1.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id WHERE table2.id IS NULL;

Diese Lösung basiert darauf, dass der LEFT JOIN bei einer Nicht-Übereinstimmung der IDs (also wenn sich kein passender Datensatz findet) eine leere ID bei table2.id hinterlässt
id1   id2
1     1
2     2
3     -

Aus diesem Ding bleibt jetzt also nur die Zeile über, bei der diese id2 NULL ist, demnach die Zeile mit der 3.

Die funktioniert auch. Wenn ich jetzt aber auch noch in der Tabelle table2 z.B. plz = '9999' dann funktioniert das ganze nicht mehr.

Was hast du jetzt hiermit vor?
SELECT * FROM tab1 WHERE id NOT IN (SELECT * FROM tab2 WHERE plz='9999')

Lass mich mal basteln:
SELECT * FROM tab1 LEFT JOIN tab2
ON tab1.id = tab2.id
WHERE tab2.id IS NULL
   OR tab2.plz <> '9999'

Ich behaupte, auf diese Weise sorgt er dafür, dass nur die Datensätze überleben, deren ID gar nicht in tab2 vorkommen, oder aber diejenigen die zwar vorkommen, bei denen aber die zugehörige PLZ toleriert wird...

Aber ist nur ein Versuch - Ich liebe Subqueries und andere DBMS...

MfG
Rouven

--

-------------------
ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(