Gegen Bilderklau - Das Original (https://www.gegen-bilderklau.net/index.php)
- Design, Website, Copyright (https://www.gegen-bilderklau.net/board.php?boardid=80)
--- Homepagehilfe (https://www.gegen-bilderklau.net/board.php?boardid=27)
---- Homepagehilfe - Archiv (https://www.gegen-bilderklau.net/board.php?boardid=139)
----- [PHP & MySQL] Subquery aus gleicher Tabelle? (https://www.gegen-bilderklau.net/thread.php?threadid=163327)
Geschrieben von cll am 15.10.2009 um 12:23:
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?
Danke für Hilfe!
Geschrieben von Ayana am 15.10.2009 um 14:09:
Was tut das z da mittendrin?
Um das zu verstehen, muesste ich, denke ich, den Aufbau deiner Tabellen kennen, ist so etwas schwer.
Geschrieben von 1Sm!le am 15.10.2009 um 14:47:
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)
Geschrieben von cll am 15.10.2009 um 16:15:
versuchen kann ichs mal ob ers akzeptiert wenn ich bei beiden aliasnamen verwende. Bei der ersten Tabelle akzeptiert PhpMyadmin den alias nämlich nicht!
Geschrieben von 1Sm!le am 16.10.2009 um 16:13:
Was ist denn "nicht akzeptieren"?
Geschrieben von cll am 17.10.2009 um 11:16:
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
Forensoftware: Burning Board, entwickelt von WoltLab GmbH