SQL Ist das per SQL möglich

Snaker001

Lt. Junior Grade
Registriert
Jan. 2009
Beiträge
504
Hi,

ich habe eine mysql-Tabelle (mysql 4) und möchte folgendes Problem lösen:

Es sieht so aus:

Tab1
------
ID, Status
1 , 1
2 , 1
3 , 0
4 , 1

Tab2
------
ID,ITEM
1 , 1
1 , 2
1 , 3
2 , 1
2 , 2
3 , 3
4 , 1
4 , 2
4 , 3

Ich möchte alle IDs rausfiltern, die den Status 1 haben und in der Tab 2 kein Eintrag mit dem Wert ITEM = 3 hat. D.h. in meinem Beispiel müsste die Lösung ID=2 (hat Status 1 und kein Eintrag in der Tab2 mit ITEM = 3) sein.

Ich bekomme es einfach nicht hin. Es sieht so einfach aus, ist es aber wohl nicht :-) Könnt Ihr vielleicht weiterhelfen.


Viele Grüße und Danke
Snaker001
 
Hi,

mit JOIN und Subselect:

SELECT * FROM Tab1
INNER JOIN TAB2 ON Tab1.ID = Tab2.ID
WHERE Status = 1
AND Tab2.ID NOT IN (SELECT DISTINCT ID FROM Tab2 WHERE STATUS = 3)

Gruß,
d2boxSteve
 
Code:
select * from Tab1
where Status = 1
and ID not in (
      select ID from Tab2 
      where Item = 3
)
 
Die Variante von X__ zeigt nur den Inhalt von Tab1, meine die von beiden Tabellen, aber Ergebnis ist gleich.
 
Man sollte aber anmerken, dass solche Subqueries nicht sehr performant sind unter MySQL, da der Index wegfliegt.
Wenn du es per PHP Auswerten möchtest, bieten sich 2 Queries an.
Zuerst die IN Statement Werte abholen und in der 2. Query damit arbeiten.
 
Zurück
Oben