[MySQL] Problem mit JOIN und SUM

Eroli

Erfahrenes Mitglied
Hallo zusammen,

ich möchte mir gerne die neustens Datensätze aus einer Tabelle laden. Diese befinden sich in der Tabelle artikel. Damit ich weiß, wie oft ein Artikel gelesen worden ist, nehmen wir an, es gäbe eine andere tabelle views in der ganz stupide ein Datensatz eingefügt wird, wenn ein View erfolgt.

So, nun möchte ich mir alle artikel inkl. die Anzahl der Views und wer sich das angeschaut hat ausgeben lassen:

Code:
SELECT a.Titel, v.User
FROM artikel a
INNER JOIN views v ON a.PK_Artikel = v.FK_Artikel

Dies funktioniert noch. Diese Query liefert mehr als einen Datensatz aus. Jedoch fehlt mir ja noch die Anzahl der Views. Also wollte ich die Query wie folgt ändern:

Code:
SELECT a.Titel, v.User, SUM(v.PK_View) AS Anzahl
FROM artikel a
INNER JOIN views v ON a.PK_Artikel = v.FK_Artikel

Sobald ich das SUM jedoch einführe, kriege ich immer nur noch einen Datensatz als Ergebnis zurückgeliefert --- WARUM?

Wie kann ich das ändern?

Vielen Dank schonmal,
Eroli
 
Mir half die GROUP BY Funktionalität von SQL. Damit konnte ich die Summen quasi gruppieren und habe nun wieder alles Ausgaben (also wieder alle Datensätze). Ich hoffe das hier hilft vielleicht noch einem...
 
Sobald ich das SUM jedoch einführe, kriege ich immer nur noch einen Datensatz als Ergebnis zurückgeliefert --- WARUM?

Du hast zwar die Lösung, aber noch nicht die Antwort auf diese Frage.
Aggregatfunktionen (wie z.B. SUM, COUNT, AVG, etc.) erfordern immer ein GROUP BY, denn ohne Mengen kann man auch keine Mengenfunktionen anwenden (Relationale Datenbanken implementieren im Prinzip mathematische Mengenoperationen).
Wenn du keine Gruppierung angibst, gruppiert MySQL alle Datensätze zu einer einzigen Menge, deshalb gibt es auch nur einen Datensatz als Ergebnis.
Die Lösung hast du ja bereits selbst genannt. Man muss eben selbst angeben, nach welchen Kriterien gruppiert werden soll.
 

Neue Beiträge

Zurück