Mit SUMME mit mehreren joins in mysql

Ich habe auf der Suche nach einer Lösung für dieses, es gibt viele ähnliche Fragen, aber keiner alle richtigen Antworten, die mir geholfen haben das problem zu lösen.

Erstens, meine Fragen/problem:

  1. Ich möchte die Summe und die Anzahl, mit der bestimmte Spalten in eine mehrere join-Abfrage
  2. Ist es nicht möglich mit mehreren Verknüpfungen? Muss ich das nest SELECT Abfragen?

Hier ist ein SQL-dump meiner Datenbank mit Beispiel-Daten: http://pastie.org/private/vq7qkfer5mwyraudb5dh0a

Dies ist die Abfrage, die ich dachte, würde den trick tun:

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 möchte, diese zu produzieren ist eine Tabelle, wo die Spalten für die Ziel -, assist, gw, gewinnen und spielte eine Summe/Anzahl der jede Zeile in dieser Spalte, und zwar so: (mit mitgelieferten Beispiel-Daten)

+-----------+----------+------+--------+----+-----+--------+
| 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 |
+-----------+----------+------+--------+----+-----+--------+

Also die Iteration der obigen Fragen wieder, ist das möglich, mit einer Abfrage und mehrere Verknüpfungen?

Wenn Sie Lösungen anbieten/Abfragen, bitte erklären Sie! Ich bin neu, um korrekte relationale Datenbanken und ich habe noch nie verwendet, schließt vor diesem Projekt. Ich würde auch schätzen, wenn Sie vermeiden, Aliase, sofern notwendig.

Habe ich die obige Abfrage ohne Summe und Gruppierung, und ich bekomme eine Menge von Zeilen für jede Spalte mache ich einen SELECT auf, was ich vermute, dann multipliziert oder addiert, aber ich hatte den Eindruck, dass die Gruppierung und/oder tun sum(TABLE.COLUMN) würde das lösen.

Andere Sache ist, dass, glaube ich, dabei eine SELECT DISTINCT oder andere DISTINCT Betrieb funktioniert nicht, da lassen sich einige ("Duplikat") ergibt.

PS. Wenn es darauf ankommt, meinem dev-Rechner ist ein WAMP-aber die Version wird auf ubuntu/apache/mysql/php.

  • Sie haben verbrachte viel Zeit auf der DML, so erstellen Sie bitte ein sqlfiddle.
  • Ich wusste nicht, über sqlfiddle, ic3be3rg geschaffen hat, die man in seiner Antwort, aber so dass ich nicht jetzt.
InformationsquelleAutor Nahaz | 2013-01-02
Schreibe einen Kommentar