2016-08-10 4 views
1

Mein Tisch mit den folgenden Spalten festgelegt ist:Mysql eindeutige Zeilen mit dem richtigen Zählungen für verschiedene Spalten

id - game_id - player_id - action - assist

Wo Aktion der Art der Aktion zeigt ausgeführt (Ziel unterstützt, freistoß) und unterstützen ist gefülltes mit der player_id des Spielers, der den Assist gibt (falls vorhanden). Einige Spieler_IDs haben mehr Reihen für verschiedene Aktionen innerhalb eines Spiels.

Jede Zeile wird daher mit zum Beispiel gefüllt:

1 - 3 - 15 - goal - 5

Ich möchte nun eine Übersicht erstellen, die alle Aktionen pro player_id summiert, so habe ich nur eine Zeile pro player_id in meinem Ergebnis-Array. Ich habe dies mit der folgenden Abfrage durchgeführt, die für mich zu arbeiten scheint:

SELECT id, player_id, game_id, assist, action, COUNT(*) AS count FROM game_action WHERE game_id = 3 GROUP BY player_id

In einigen Reihen gibt es jedoch einen Wert in der Spalte unterstützen. Ich möchte auch die Informationen der Spieler abrufen und sie als eine separate Zeile mit der richtigen Anzahl für "assistieren" auflisten.

Wie würde ich darüber gehen? Oder wäre es sinnvoller, die Art und Weise zu ändern, wie meine Tabellenstruktur und das Speichern von Datensätzen eingerichtet werden?

+0

Gruppe von beiden Spalten? Z.B. 'GROUP BY player_id, assist' – jitendrapurohit

+0

Das scheint nicht den Trick @jitendrapurohit zu tun. Danke für deinen Vorschlag! – Ties

+0

Bitte geben Sie ein Beispiel für die Art der Ausgabe, die Sie wollen. –

Antwort

0

Was ist mit Union? Beispiel:

SELECT id, player_id, game_id, assist, action, COUNT(*) AS count 
FROM game_action 
WHERE game_id = 3 GROUP BY player_id 
union 
SELECT id, player_id, game_id, assist, action,count(*) 
from game_action 
where player_id in (select assist from game_action where game_id = 3) 
GROUP BY player_id 
Verwandte Themen