WHERE IN mit Ausschluss von "xy"

SPatrick

Grünschnabel
Hallo,

ich moechte eine eigentlich recht simple Abfrage ueber zwei Tabellen erstellen, in der ich zuerst die Ergebnisse anhand der zweiten Tabelle (mm) beschraenke und danach diese Beschraenkung nochmal um eine Art Exclude erweitere.

Der SELECT sieht beispielsweise so aus:
SELECT * FROM personen, personen_cat_mm WHERE personen_cat_mm.uid_local = personen.uid AND (personen_mm.uid_foreign IN (25) AND personen_mm.uid_foreign NOT IN(84,79))

Was soll hier passieren?
Ich moechte nur Personen aus der Kategorie mit der 25 haben, die aber nicht zusaetzlich in den Kategorien 84 und 79 vertreten sein duerfen.
Ich hoffe, ihr versteht was ich meine?

Jedenfalls funktioniert es so nicht, der "Exclude" hat an der Stelle keine Wirkung. Was meint ihr, woran das liegt?

Gruesse
 
In der WHERE bedingung wird nur eine Zeile betrachtet.
Also bekommst du wahrscheinlich nur alle die, die uid_foreign = 25 haben, aber deine weitere beschränkung hat keine Auswirkung.

Aber du müsstest eine subquery machen:

Code:
SELECT * 
FROM personen, personen_cat_mm 
WHERE personen_cat_mm.uid_local = personen.uid 
AND personen_mm.uid_foreign = 25 
AND personen_mm.uid_foreign NOT IN(
   SELECT uid_foreign 
   FROM personen_mm 
   WHERE uid_foreign IN (84,79)
)

Sowas in der Art.
 
Zurück