Как объединить команду A и команду B в одну запись с одинаковым идентификатором матча? - PullRequest
0 голосов
/ 23 мая 2018

Я строю футбольную базу данных, у меня есть таблица команд и таблица матчей (среди прочего, конечно ..).

Есть две записи для одной игры, одна для команды А и однадля команды B. Так, например:

ID: 0
Team: Arsenal
Result: Win

ID 0
Team: Chelsea
Result: Loss

Во-первых, это лучший подход к этому?Или должен ли прибор быть одной записью с двумя столбцами для двух команд?

Во-вторых, как я могу объединить эти данные, когда речь идет о запросах.Например, если бы я хотел вернуть все приборы с участием Арсенала, чтобы дать мне:

ID: 0
Team 1: Arsenal
Team 2: Chelsea
Result: Win

Просто точка в правильном направлении была бы блестящей.

Очень ценю помощь.

Спасибо !!

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Я определенно согласен с Impaler, что структура таблицы может быть лучше, чтобы избежать таких проблем в будущем.Но вернемся к вашему вопросу. Единственный способ найти точный набор результатов, который я могу найти, - это получить две производные таблицы, в которых одна фильтруется по результатам.У меня есть один для победителей и один для проигравшей команды.Оттуда я соединил столы и вытащил необходимую информацию.Надеюсь это поможет.http://sqlfiddle.com/#!18/967db/1/0

SELECT
    tb1.id
    ,tb1.team AS 'team 1'
    ,tb2.team AS 'team 2'
    ,tb1.result
From
(SELECT
    * 
FROM 
dbo.teams
WHERE result LIKE 'win') AS tb1
JOIN 
(SELECT
    * 
FROM 
dbo.teams
WHERE result LIKE 'loss') tb2 ON tb2.id = tb1.id
0 голосов
/ 23 мая 2018

Структура таблицы, которую вы показываете, больше похожа на формат передачи данных.

Для длительного хранения и запросов вы, вероятно, разделите его на две таблицы:

  • team:
    • id
    • name
  • match:
    • match_id
    • local_team_id
    • visitor_team_id
    • результат

В противном случае даже простые запросы, подобные тому, о котором вы спрашиваете, становятся излишне запутанными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...