Vinzenz Mai: SQL: Aggregatsfunktionen

Beitrag lesen

Hallo

ich habe ein Problem bei einer Datenbankabfrage. Der zugehörige PHP Code lautet wie folgt:

es gibt keinen zugehörigen PHP-Code. Bitte poste das SQL-Statement, auch wenn
hier ein typischer Anfängerfehler zu sehen ist.

$sql = "SELECT *,SUM(page_views) AS summe_page_views FROM $db_tab WHERE DATE_FORMAT(last_view,'%d.%m.%Y' )='$datum_heute'";

Ist es grundsätzlich schon eine sehr schlechte Idee SELECT * zu schreiben, so ist es in diesem Falle völliger Unsinn.

Schließlich musst Du nach _jeder_ einzelnen Spalte gruppieren, auf die keine
Aggregatsfunktion angewandt wird - da Du eine Aggregatsfunktion verwendest.

Interessant wird das Ganze wenn man den * weglässt, also nur noch die Summe berechnet --> der Fehler verschwindet, der Sinn der Abfrage aber leider auch ....

Da die Abfrage von jedem DBMS, erstaunlicherweise sogar von MySQL als fehlerhaft
zurückgewiesen wird, ist sie sowieso sinnlos. Bitte beachte, dass jede Spalte,
die nicht eindeutige Werte aufweist, in Deiner Query irgendwelche zufälligen
Werte aufweisen wird. Vermutlich ließe sich Dein Problem mit einer korrelierten
Unterabfrage lösen, mangels Beispieldaten und dem daraus resultierenden
Ergebnis läßt sich Dir nicht weiter helfen.

Weiterhin wichtig: Welche MySQL-Version ist im Einsatz?

Freundliche Grüße

Vinzenz