Używanie SUM z wieloma połączeniami w mysql
Szukałem rozwiązania tego problemu, jest wiele podobnych pytań, ale żadne nie ma właściwych odpowiedzi, które pomogłyby mi rozwiązać problem.
Po pierwsze, moje pytania / problem:
Chcę sumować i policzyć pewne kolumny w kwerendzie wielokrotnego łączeniaCzy nie jest możliwe z wieloma połączeniami? Czy muszę gniazdowaćSELECT
zapytania?Oto zrzut SQL mojej bazy danych z przykładowymi danymi:http://pastie.org/private/vq7qkfer5mwyraudb5dh0a
To jest pytanie, które myślałem, że może załatwić sprawę:
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
To, co chciałbym, aby to wyprodukowało, to tabela, w której kolumny celu, asysty, gw, wygranej i granej są sumą / liczbą każdego wiersza w tej kolumnie, tak: (z dostarczonymi przykładowymi danymi)
+-----------+----------+------+--------+----+-----+--------+
| 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 |
+-----------+----------+------+--------+----+-----+--------+
Czy więc, aby powtórzyć powyższe pytania, czy jest to możliwe przy jednym zapytaniu i wielu połączeniach?
Jeśli dostarczasz rozwiązania / zapytania,proszę wyjaśnij je! Jestem nowicjuszem w odpowiednich relacyjnych bazach danych i nigdy nie korzystałem z łączenia przed tym projektem. Byłbym również wdzięczny, jeśli unikniesz aliasów, chyba że jest to konieczne.
Uruchomiłem powyższe zapytanie bez sumy i grupowania i otrzymuję zestaw wierszy dla każdej kolumny, którą robięSELECT
dalej, co, jak podejrzewam, jest następnie mnożone lub sumowane, ale miałem wrażenie, że grupuję się i / lub robięsum(TABLE.COLUMN)
rozwiąże to.
Inną rzeczą jest to, że myślę, żeSELECT DISTINCT
lub jakikolwiek innyDISTINCT
operacja nie będzie działać, ponieważ pominie niektóre („duplikaty”) wyniki.
PS. Jeśli ma to znaczenie, moja maszyna dev jest WAMP, ale wydanie będzie na ubuntu / apache / mysql / php.