MySQL SELECT mit GROUP BY und INNER JOIN

Eldorado

Bekanntes Mitglied
Guten Abend,
ich habe ein Problem mit dem gestalten einer MySQL-Datenbankanfrage:

Tabellen(alles was nichts direkt mit der Abfrage zu tun weg gelassen):
Code:
user_results
------------------
points
day

questions
--------------
shortDescription

Folgende Abfrage liefert den gewünschten Wert(Durchschnitt aller Punkte-1*100(berechnung unwichtig 😉) für jeden Tag):
Code:
SELECT ur.day, ROUND(AVG(ur.points-1)*100) AS points FROM user_results ur GROUP BY ur.day

Will ich dann aber noch die Kurzbeschreibung der Frage für den Tag, gibt er mir immer nur einen Datensatz zurück:
Code:
SELECT ur.day, ROUND(AVG(ur.points-1)*100) AS points, q.shortDescription FROM user_results ur INNER JOIN questions q ON q.day=ur.day GROUP BY ur.day

Könnt ihr mir erklären, warum meine Anfrage mit dem Join nicht wie gewollt funktioniert oder ob der Fehler wo anders liegen muss?

Vielen Dank für eure Hilfe!
 
Grundsätzlich müssen alle Felder aus Select, die nicht per Aggregatfunktion zusammengefasst werden, auch in der Group by Klausel auf geführt werden. Ansonsten sehe ich hier kein Feld day in der Tabelle questions

Ich nehme mal an, dass beides hier nur vergessen wurde zu posten, daher würde ich mal vermuten es gibt nur eine Übereinstimmung zwischen user_result.day und questions.day
 
Du hast vollkommen recht, es gibt nur eine Übereinstimmung. Ich hatte nur nicht dran gedacht, da dieser Fall später(jetzt auch schon nicht mehr) nie auftreten kann.
Danke, dass du den Schlauch unter meinen Füßen weggezogen hast 😉
 

Zurück
Oben