Verwendung von SUM mit mehreren Joins in MySQL

Ich habe nach einer Lösung dafür gesucht, es gibt viele ähnliche Fragen, aber keine hat die richtigen Antworten gefunden, die mir bei der Lösung des Problems geholfen haben.

Zunächst meine Fragen / Probleme:

Ich möchte bestimmte Spalten in einer Multiple-Join-Abfrage summieren und zählenIst das nicht mit mehreren Joins möglich? Muss ich nisten?SELECT Fragen?

Hier ist ein SQL-Dump meiner Datenbank mit Beispieldaten:http://pastie.org/private/vq7qkfer5mwyraudb5dh0a

Dies ist die Abfrage, von der ich dachte, dass sie den Trick macht:

SELECT firstname, lastname, sum(goal.goal), sum(assist.assist), sum(gw.gw), sum(win.win), count(played.idplayer) FROM player
LEFT JOIN goal USING (idplayer)
LEFT JOIN assist USING (idplayer)
LEFT JOIN gw USING (idplayer)
LEFT JOIN win USING (idplayer)
LEFT JOIN played USING (idplayer)
GROUP BY idplayer

Was ich daraus machen möchte, ist eine Tabelle, in der die Spalten für "Goal", "Assist", "GW", "Win" und "Gespielt" eine Summe / Anzahl jeder Zeile in dieser Spalte sind.

+-----------+----------+------+--------+----+-----+--------+
| firstname | lastname | goal | assist | gw | win | played |
+-----------+----------+------+--------+----+-----+--------+
| Gandalf   | The White|   10 |      6 |  1 |   1 |      2 |
| Frodo     | Baggins  |   16 |      2 |  1 |   2 |      2 |
| Bilbo     | Baggins  |    7 |      3 |  0 |   0 |      2 |
+-----------+----------+------+--------+----+-----+--------+

Ist dies, um die obigen Fragen noch einmal zu wiederholen, mit einer Abfrage und mehreren Verknüpfungen möglich?

Wenn Sie Lösungen / Abfragen bereitstellen,bitte erkläre sie! Ich bin neu in relationalen Datenbanken und habe vor diesem Projekt noch nie Joins verwendet. Ich würde mich auch freuen, wenn Sie Aliase vermeiden, sofern dies nicht erforderlich ist.

Ich habe die obige Abfrage ohne Summe und Gruppierung ausgeführt und bekomme eine Reihe von Zeilen für jede Spalte, die ich aSELECT auf, was ich vermute, wird dann multipliziert oder addiert, aber ich hatte den Eindruck, dass gruppieren und / oder tunsum(TABLE.COLUMN) würde das lösen.

Eine andere Sache ist, denke ich, einSELECT DISTINCT oder irgend ein andererDISTINCT Die Operation funktioniert nicht, da dadurch einige ("doppelte") Ergebnisse ausgelassen werden.

PS. Wenn es darauf ankommt, ist meine Dev-Maschine ein WAMP, aber die Veröffentlichung erfolgt unter Ubuntu / Apache / MySQL / PHP.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage