база данных по футболу - sql запрос - нет просмотров - команда с наибольшим количеством голов - PullRequest
0 голосов
/ 09 января 2020

Мои таблицы:

match_table:

  season
  id_match
  home_team_id
  away_team_id
  home_team_goal
  away_team_goal

и

team_table:

  id_team
  name_team

Для каждого сезона мне нужно выбрать название команды, которая забила больше голов. Я новичок в SQL и у меня все еще есть некоторые проблемы с соединениями (я никогда не знаю точно, какой тип использовать, если слева, справа, полный ...). Вот что я пробовал:

top_scorer_team = ("""SELECT season, team_id, sum(goals) as goals
    from (select home_team_id as id_team, home_team_goal as goals from match_table
    union all
    select away_team_id as id_team, away_team_goal as goals from match_table)
    group by id_team 
    order by goals desc""")

Это не работает должным образом. Кто-нибудь может помочь? PS. Я знаю, что мне также нужно присоединиться к таблице команд, чтобы получить название команды, когда у меня есть идентификатор

edit: пример будет:

id_team | team_name

  ---------+---------------

   10      | A

   20      | B

   30      | C

   40      | D

   50      | E
season | match_id | home_team | away_team | home_goals | away_goals

  ----------+-----------+------------+------------+-------------

2008/2009  | 1        | 30        | 20         | 2          | 0

2009/2010  | 2        | 10        | 20         | 1          | 2

2012/2013  | 3        | 20        | 50         | 2          | 2

2008/2009  | 4        | 10        | 30         | 2          | 1

2011/2012  | 5        | 30        | 50         | 0          | 1

Запрос должен возврат:

season | team_name | total_goals

  ---------+-----------+------------
2008/2009| C     | 3

ecc.

1 Ответ

0 голосов
/ 09 января 2020

Чтобы получить все голы за сезон от команды:

select name_team, season, sum(tot_goals) as all_goals
from (
  select t1.name_team, season, g1.home_team_goals + g2.away_team_goals as tot_goals
  from team_table t1
  left join match_table g1
    on t1.id_team = g1.home_team_id
  left join match_table g2
    on t1.id_team= g2.away_team_id
) x1
group by name_team, season

Вы должны иметь возможность получить указанную c информацию о команде от этого

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