Sven Rautenberg: mySQL-4.1.15 & PHP Alle mit Group gruppierten Datensätze updaten

Beitrag lesen

Moin!

Ein UPDATE und irgendeine Gruppierung irgendeines vorhergehenden SELECTs haben nicht das geringste miteinander zu tun.

ganz so ist es nicht. in aller regel ist es eine gute idee, vor dem update ein select zu machen, um zu sehen, ob man wirklich die richtigen datensätze trifft. so könnte ich es mir jedenfalls vorstellen.

Du sprichst von menschlicher Interaktion. Klar, ein Mensch möchte eventuell erstmal alle Datensätze sehen, bevor er eine Massenänderung durchführt.

Dennoch: Das hat auf SQL-Ebene nichts miteinander zu tun. Zumal das Verfahren bei Interaktion über den Browser nicht nur zwei komplett unabhängige SQL-Querys enthält, sondern zwischendurch sogar die Verbindung zur Datenbank geschlossen und wieder neu geöffnet wird, weil zwei verschiedene HTTP-Requests zweimal ein Skript starten.

Es gibt also auf SQL-Ebene keine Methode, erstmal ein SELECT zu machen, und dann das Ergebnis mit UPDATE zu aktualisieren.

Insbesondere in diesem Beispiel nicht, weil obendrein die Datensätze ja auch noch gruppiert werden.

was mir aber auffält ist, das hier wieder die übliche mysql problematik zu tage kommt. grundsätzlich sollte man über alle spalten auch gruppen, die man ausgeben will. und das ist bei deiner abfrage nicht der fall. leider gibt mysql keine fehlermeldung mehr aus, jedes andere dbms würde bei dieser abfrage die ausfürhung verweigern. da würde ich als erstes ansetzen und dann sehen, wie es weitergeht.

Stimmt, das war mir so noch gar nicht aufgefallen, denn immerhin sind ja etliche Spalten in GROUP BY aufgeführt - aber eben weniger, als tatsächlich im SELECT abgefragt werden.

Das sollte in der Tat korrigiert werden. Wenn die zusätzlichen Spalten tatsächlich korrekt (im Sinne von MySQL) in allen Datensätzen identische Daten stehen haben, stört deren zusätzliche Auflistung in GROUP BY ja das Ergebnis absolut nicht.

- Sven Rautenberg

--
"Love your nation - respect the others."