Gegen Bilderklau - Das Original

Registrierung Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Statistik Chat Karte Zur Startseite

Gegen Bilderklau - Das Original » Design, Website, Copyright » Homepagehilfe » Homepagehilfe - Archiv » [PHP & MySQL] Group by in select, aber nicht in delete?! » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen
Zum Ende der Seite springen Group by in select, aber nicht in delete?!
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
cll cll ist weiblich
Hafifan in Action ->www.hafifieber.com


images/avatars/avatar-52953.png

Dabei seit: 12.02.2005
Beiträge: 1.887
Herkunft: Bayern

traurig Group by in select, aber nicht in delete?! Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich habe folgendes SQL-Statement:
SELECT * FROM ZGs GROUP BY zg Having count(zg)=1
(ruft alle zeilen ab, bei denen nur ein user in einer Gruppe (zg) ist)

Nun will ich aber genau diese Einträge löschen! Wenn ich anstatt "select *" ein delete schreibe wird aber das group by nicht mehr akzeptiert -> ich kann nicht mehr zählen wieviele user es pro Gruppe gibt

Wie umgehe ich das am Besten?

__________________

15.10.2009 11:59 cll ist offline E-Mail an cll senden Homepage von cll Beiträge von cll suchen Nehmen Sie cll in Ihre Freundesliste auf Fügen Sie cll in Ihre Kontaktliste ein
Ayana Ayana ist weiblich
» you're far away


images/avatars/avatar-46126.jpg

Dabei seit: 17.04.2006
Beiträge: 5.822

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Wird GROUP BY nicht eigentlich zum Sortieren von Werten mit arithmetischen Operatoren verwendet? Ich haette das ganze wohl mit WHERE umgesetzt..

__________________
Die schoensten Augenblicke im Leben sind jene,
in denen das Herz aus Freude und nicht aus Gewohnheit schlaegt!
27.12.2008 <3

15.10.2009 14:07 Ayana ist offline Beiträge von Ayana suchen Nehmen Sie Ayana in Ihre Freundesliste auf Fügen Sie Ayana in Ihre Kontaktliste ein MSN Passport-Profil von Ayana anzeigen
1Sm!le 1Sm!le ist weiblich
Mitglied


images/avatars/avatar-42097.png

Dabei seit: 05.03.2005
Beiträge: 441
Herkunft: Berlin

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

GROUP BY wird zum Gruppieren nach Zeilen genutzt. Das ist eine völlig legitime Variante.

Da aber GROUP BY und HAVING von MySQL erst sehr spät in der internen Abarbeitung ausgeführt werden - nachdem schon alle Ergebnisse beisammen sind - empfehle ich für diese Art Abfrage auch ein WHERE, das ist MySQL-intern sinnvoller. Es bedeutet nämlich: Hole (SELECT) alle Zeilen, die die Bedingung WHERE erfülllen.
Bei dir läuft hingegeben ab: Beim SELECT wird erst selektiert und die Ergebniszeilen dann gruppiert und nach der HAVING-Bedingung noch mal aussortiert.

DELETE akzeptiert aber keine Gruppierung, das macht auch keinen Sinn: Beim DELETE müsste er erst alle löschen und dann gruppieren - das geht inhaltlich nicht. Deshalb: Wechsle auf WHERE-Bedingung.

__________________

15.10.2009 14:55 1Sm!le ist offline E-Mail an 1Sm!le senden Homepage von 1Sm!le Beiträge von 1Sm!le suchen Nehmen Sie 1Sm!le in Ihre Freundesliste auf
cll cll ist weiblich
Hafifan in Action ->www.hafifieber.com


images/avatars/avatar-52953.png

Dabei seit: 12.02.2005
Beiträge: 1.887
Herkunft: Bayern

Themenstarter Thema begonnen von cll
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

aber wie kann ich im WHERE ausdrücken dass ich alle möchte bei denen der Wert in "zg" einmalig ist?

__________________

15.10.2009 16:13 cll ist offline E-Mail an cll senden Homepage von cll Beiträge von cll suchen Nehmen Sie cll in Ihre Freundesliste auf Fügen Sie cll in Ihre Kontaktliste ein
cll cll ist weiblich
Hafifan in Action ->www.hafifieber.com


images/avatars/avatar-52953.png

Dabei seit: 12.02.2005
Beiträge: 1.887
Herkunft: Bayern

Themenstarter Thema begonnen von cll
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

jetzt weiß ich zumindest den Anfang der Abfrage:
SELECT * FROM ZGs USING ZGs z, ZGs v WHERE ...
aber dann weiß ich schon wieder nicht so wirklich weiter.

Ich denke jetzt mal das ist wie ein join, also
WHERE z.zg=v.zg AND z.user!=v.user
kombiniert alle mit gleicher Spalte "zg" miteinander, bei denen die Spalte "user" unterschiedlich ist.
Weiß jemand ob meine Annahme stimmt dass er mit "AND v.user IS NULL" dann nur die Zeilen auswählt, in denen kein Partner gefunden wurde?

also komplett:
SELECT * FROM ZGs USING ZGs z, ZGs v WHERE z.zg=v.zg AND z.user!=v.user AND v.user IS NULL

wenn nicht, helft mir bitte! LG

__________________

17.10.2009 11:28 cll ist offline E-Mail an cll senden Homepage von cll Beiträge von cll suchen Nehmen Sie cll in Ihre Freundesliste auf Fügen Sie cll in Ihre Kontaktliste ein
Baumstruktur | Brettstruktur
Gehe zu:
Gegen Bilderklau - Das Original » Design, Website, Copyright » Homepagehilfe » Homepagehilfe - Archiv » [PHP & MySQL] Group by in select, aber nicht in delete?!

Impressum

Forensoftware: Burning Board, entwickelt von WoltLab GmbH