Как выбрать несколько значений для одной таблицы «ячейки» MySQL - PullRequest
0 голосов
/ 17 февраля 2019

Для всех игроков мне нужно найти номер игрока и список номеров команд, за которые они когда-либо играли.

Вот таблица "МАТЧИ":

+---------+--------+----------+-----+------+
| MATCHNO | TEAMNO | PLAYERNO | WON | LOST |
+---------+--------+----------+-----+------+
|       1 |      1 |        6 |   3 |    1 |
|       2 |      1 |        6 |   2 |    3 |
|       3 |      1 |        6 |   3 |    0 |
|       4 |      1 |       44 |   3 |    2 |
|       5 |      1 |       83 |   0 |    3 |
|       6 |      1 |        2 |   1 |    3 |
|       7 |      1 |       57 |   3 |    0 |
|       8 |      1 |        8 |   0 |    3 |
|       9 |      2 |       27 |   3 |    2 |
|      10 |      2 |      104 |   3 |    2 |
|      11 |      2 |      112 |   2 |    3 |
|      12 |      2 |      112 |   1 |    3 |
|      13 |      2 |        8 |   0 |    3 |
+---------+--------+----------+-----+------+

Лучшее, что я мог придумать, было:

SELECT DISTINCT playerno, teamno
FROM matches
ORDER BY playerno;

, что привело к:

+----------+--------+
| playerno | teamno |
+----------+--------+
|        2 |      1 |
|        6 |      1 |
|        8 |      1 |
|        8 |      2 |
|       27 |      2 |
|       44 |      1 |
|       57 |      1 |
|       83 |      1 |
|      104 |      2 |
|      112 |      2 |
+----------+--------+

Обратите внимание, как игрок 8 сыграл в двух командах.Как я могу заставить таблицу показывать только одну строку для игрока 8 и список teamno (1 и 2)?

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019

Вы можете использовать group_concat

SELECT playerno, group_concat( teamno)
FROM matches
GROUP BY playerno;
0 голосов
/ 17 февраля 2019

Вы можете использовать агрегатную функцию group_concat:

SELECT   playerno, GROUP_CONCAT(DISTINCT teamno)
FROM     matches
GROUP BY playerno
ORDER BY playerno;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...