mySQL SELECT присоединиться, сгруппировать или что-то

0

Я не могу попасть на правильный путь с этим, любая помощь будет оценена

У меня есть одна таблица

+---+----------+---------+-----------+
|id | match_id | team_id | player_id |
+---+----------+---------+-----------+
| 1 |        9 |      10 |         5 |
| 2 |        9 |      10 |         7 |
| 3 |        9 |      10 |         9 |
| 4 |        9 |      11 |        12 |
| 5 |        9 |      11 |        15 |
| 6 |        9 |      11 |        18 |
+---+----------+---------+-----------+

Я хочу выбрать их с помощью where_ match_id и оба идентификатора команды, поэтому вывод будет

+---------+-------+------+---------+---------+
| MATCHID | TEAMA | TEAMB| PLAYERA | PLAYERB |
+---------+-------+------+---------+---------+    
|       9 |    10 |   11 |       5 |      12 |
|       9 |    10 |   11 |       7 |      15 |
|       9 |    10 |   11 |       9 |      18 |
+---------+-------+------+---------+---------+

Это, наверное, очень просто, но я застрял.

заблаговременно

p.s. казалось, забыл колонку на моем первом посте, извините

  • 1
    Почему игрок № 5 и игрок № 12 находятся в одном ряду? Какое правило вы используете для этого?
  • 0
    Ага. что определяет, какие два игрока находятся в одном ряду?
Показать ещё 2 комментария
Теги:
inner-join

3 ответа

2

Думаю, вам нужно:

SELECT
    a.match_id, a.team_id AS TeamA, b.team_id AS teamB, 
    a.player_id AS PlayerA, b.player_id AS PlayerB
FROM PLayer AS a
    INNER JOIN Player AS b ON a.match_id = b.match_id
WHERE a.team_id < b.team_id

Хотя это даст вам каждую пару игроков для каждой игры, то есть

+---------+-------+------+---------+---------+
| MATCHID | TEAMA | TEAMB| PLAYERA | PLAYERB |
+---------+-------+------+---------+---------+    
|       9 |    10 |   11 |       5 |      12 | 
|       9 |    10 |   11 |       5 |      15 |
|       9 |    10 |   11 |       5 |      18 |
|       9 |    10 |   11 |       7 |      12 |
|       9 |    10 |   11 |       7 |      15 |
|       9 |    10 |   11 |       7 |      18 |
|       9 |    10 |   11 |       9 |      12 |
|       9 |    10 |   11 |       9 |      15 |
|       9 |    10 |   11 |       9 |      18 |
+---------+-------+------+---------+---------+

Чтобы ограничить его дальше, вам нужен критерий, чтобы определить, что игроки должны быть в паре.

1

Я думаю, что лучше переделать вашу базу данных.

  • 0
    -1 бесполезно; не указывает на лучший дизайн
0
select MatchA.id as MATCHID, MatchA.team_id as TEAMA, MatchB.team_id as TEAMB, MatchA.player_id as PLAYERA, MatchB.player_id as PLAYERB
from Match as MatchA, match as MatchB 
where MatchA.id = MatchB.id and MatchA.team_id < MatchB.team_id
  • 1
    <> Даст вам команду 10 с 11, а также команду 11 с 10.
  • 0
    Ах да, это правда.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню