Dabei seit: 12.02.2005
Beiträge: 1.887
Herkunft: Bayern
Subquery aus gleicher Tabelle?
Ich habe eine Tabelle mit den Spalten
user, gruppe(zg), status
Nun möchte ich alle abrufen/löschen, deren Gruppe niemanden mit Status 0 hat
SELECT * FROM ZGs z WHERE NOT EXISTS (SELECT id FROM ZGs WHERE zg=z.zg AND status=0)
die Aliasnamen werden hier aber nicht anerkannt. Ohne kapiert er nicht, dass mit dem hinteren zg die erste Tabelle ZGs gemeint ist. Wie kann ich das lösen?
Dabei seit: 05.03.2005
Beiträge: 441
Herkunft: Berlin
Das z als Name für die Tabelle ist da schon sinnvoll.
Erstmal: Schick die Anfrage an PhpMyadmin o.ä. und schau dir die Fehler an. Das hilft meist bei der Selbstdiagnose.
Meine Idee, wie du vorgehen solltest: Beiden Tabellen Alias-Namen geben, nicht nur einer.
Das wäre dann: SELECT * FROM ZGs z WHERE NOT EXISTS
(SELECT z2.id FROM ZGs z2 WHERE z2.zg=z.zg AND z2.status=0)
Dabei seit: 12.02.2005
Beiträge: 1.887
Herkunft: Bayern
Themenstarter
versuchen kann ichs mal ob ers akzeptiert wenn ich bei beiden aliasnamen verwende. Bei der ersten Tabelle akzeptiert PhpMyadmin den alias nämlich nicht!
Dabei seit: 12.02.2005
Beiträge: 1.887
Herkunft: Bayern
Themenstarter
kam ne Fehlermeldung mit dem z.
Aber danke, mit 2 verschiedenen Aliasnamen funktionierts wirklich!
EDIT:
*aaargh* bei Select funktionierts, sobald ich das durch DELETE ersetze wieder nicht!
DELETE FROM ZGs z WHERE NOT EXISTS (
SELECT id
FROM ZGs c
WHERE c.zg = z.zg
AND STATUS =0
)
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'z WHERE NOT EXISTS (SELECT id FROM ZGs c WHERE c.zg = z.zg AND STATUS =0)' at line 1
__________________
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von cll: 17.10.2009 11:32.