SQL Befehl
GELight
- datenbank
0 Klaus Mock0 Ilja
Hallo alle zusammen,
Ich sitze an einem kleinen Problem fest und bäuchte mal einen Tip.
tab_Teilnehmer: id, Mitgliedsnummer
tab_Teilnahmen: Teilnehmer, Punkte
tab_punkte: id, Punkte
mein Befehl sieht derzeit wie folg aus:
SELECT u.Mitgliedsnummer AS UsrNr,
p.Punkte AS Punkte
FROM dbcup_Teilnehmer u
LEFT JOIN dbcup_Teilnahmen t ON (u.id = t.Teilnehmer)
LEFT JOIN dbcup_punkte p ON (p.id = t.Punkte)
ORDER BY UsrNr ASC
...dieser funktioniert soweit wunderbar und er gibt mir alle Teilnahmen(Mitgliedsnummern) aus + dessen Punkte, die er gemacht hat.
Jetzt möchte ich gern alle Mitgliedsnummern zusammenfügen und deren Punkte zusammenrechnen.
Meine Idee war diese hier: Bringt allerdings einen Fehler.
SELECT u.Mitgliedsnummer AS UsrNr,
COUNT(p.Punkte) AS Punkte
FROM dbcup_Teilnehmer u
LEFT JOIN dbcup_Teilnahmen t ON (u.id = t.Teilnehmer)
LEFT JOIN dbcup_punkte p ON (p.id = t.Punkte)
ORDER BY UsrNr ASC
Wie muss ich das Count oder Sum anwenden um die Punkte für jeden User zusammenzurechnen?
also statt:
1000 - 50
1000 - 20
1100 - 10
1100 - 12
soll:
1000 - 70
1100 - 22
...zurückgegeben werden.
Mario...
Hallo,
Jetzt möchte ich gern alle Mitgliedsnummern zusammenfügen und deren Punkte zusammenrechnen.
Du willst also die Daten nach einem betsimmten Kriterium (Mitgliedsnummer) gruppieren, und dabei einige oder auhc nur eine der möglichen Aggregatfunktionen verwenden.
Grüße
Klaus
yo,
Meine Idee war diese hier: Bringt allerdings einen Fehler.
dies schließt dann schon mal die verwendung einer aktuelleren mysql version als dbms aus. ;-)
SELECT u.Mitgliedsnummer AS UsrNr,
COUNT(p.Punkte) AS Punkte
FROM dbcup_Teilnehmer u
LEFT JOIN dbcup_Teilnahmen t ON (u.id = t.Teilnehmer)
LEFT JOIN dbcup_punkte p ON (p.id = t.Punkte)
ORDER BY UsrNr ASCWie muss ich das Count oder Sum anwenden um die Punkte für jeden User zusammenzurechnen?
deine abfrage ist fast komplett und wie klaus schon sagte...
SELECT u.Mitgliedsnummer AS UsrNr,
COUNT(p.Punkte) AS Punkte
FROM dbcup_Teilnehmer u
LEFT JOIN dbcup_Teilnahmen t ON (u.id = t.Teilnehmer)
LEFT JOIN dbcup_punkte p ON (p.id = t.Punkte)
GROUP BY UsrNr
ORDER BY UsrNr ASC
Ilja
Hallo Ilja,
da ist Dir doch glatt etwas durch die Lappen gegangen:
deine abfrage ist fast komplett und wie klaus schon sagte...
> SELECT u.Mitgliedsnummer AS UsrNr,
/* Bitte ersetze in der folgende Zeile
COUNT(p.Punkte) AS Punkte
durch die geeignete Aggregatsfunktion SUM()
Die Punkte sollen wohl summiert werden :-) */
SUM(p.Punkte) AS Punkte
> FROM dbcup_Teilnehmer u
> LEFT JOIN dbcup_Teilnahmen t ON (u.id = t.Teilnehmer)
> LEFT JOIN dbcup_punkte p ON (p.id = t.Punkte)
> GROUP BY UsrNr
> ORDER BY UsrNr ASC
Freundliche Grüße
Vinzenz