cll
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?
Danke für Hilfe!
Ayana
Was tut das z da mittendrin?
Um das zu verstehen, muesste ich, denke ich, den Aufbau deiner Tabellen kennen, ist so etwas schwer.
1Sm!le
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)
cll
versuchen kann ichs mal ob ers akzeptiert wenn ich bei beiden aliasnamen verwende. Bei der ersten Tabelle akzeptiert PhpMyadmin den alias nämlich nicht!
1Sm!le
Was ist denn "nicht akzeptieren"?
cll
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