【发布时间】:2019-05-15 00:00:23
【问题描述】:
在命令行上的 MySQL 中,我试图打印单场比赛中进球数超过 3 个的球队的名称,无论是主队、客队还是两者兼而有之。
我有两个关系:
Team
+---------+-----------+------+----+
| name | shortName | abbr | id |
+---------+-----------+------+----+
Game
+---------+--------------+--------------+------------+------------+
| game_id | home_team_id | away_team_id | score_home | score_away |
+---------+--------------+--------------+------------+------------+
(home_team_id 和 away_team_id 都是 Team.id 的外键)
我首先尝试查找球队进球数超过 3 个的 game_id:
> SELECT game_id, score_home, score_away
FROM Game
WHERE score_home > 3 OR score_away > 3;
+---------+------------+------------+
| game_id | score_home | score_away |
+---------+------------+------------+
| 7 | 6 | 2 |
| 35 | 3 | 4 |
| 70 | 4 | 1 |
| 71 | 2 | 5 |
| 84 | 5 | 1 |
| 88 | 6 | 2 |
| 97 | 1 | 5 |
| 103 | 6 | 1 |
+---------+------------+------------+
所以我很确定最多应该只有大约 8 支球队的进球数超过 3 个。然后我尝试了 INNER JOINS,但我不太确定这如何与两个不同的外键和条件一起工作,但这是我的尝试:
> SELECT Team.name as Team_Name, Game.game_id, Game.score_home, Game.score_away
-> FROM Team
-> INNER JOIN Game ON Team.id=home_team_id OR Team.id=away_team_id
-> WHERE score_home > 3 OR score_away > 3;
+-------------------+---------+------------+------------+
| Team_Name | game_id | score_home | score_away |
+-------------------+---------+------------+------------+
| Arsenal | 71 | 2 | 5 |
| Everton | 7 | 6 | 2 |
| Manchester City | 70 | 4 | 1 |
| Manchester City | 84 | 5 | 1 |
| Manchester City | 103 | 6 | 1 |
| Norwich City | 88 | 6 | 2 |
| Tottenham Hotspur | 70 | 4 | 1 |
| Tottenham Hotspur | 97 | 1 | 5 |
| Newcastle United | 88 | 6 | 2 |
| Newcastle United | 103 | 6 | 1 |
| West Ham United | 35 | 3 | 4 |
| Leicester City | 71 | 2 | 5 |
| Sunderland | 7 | 6 | 2 |
| Bournemouth | 35 | 3 | 4 |
| Bournemouth | 84 | 5 | 1 |
| Bournemouth | 97 | 1 | 5 |
+-------------------+---------+------------+------------+
当我只想要得分高于 3 分的球队时,它给了我主队和客队的名称。请帮忙。
【问题讨论】:
-
您只需要球队名称(可能还有 ID),还是真的想列出球队得分超过 3 个进球的所有比赛?
-
我只想要在一场比赛中进球数超过 3 的球队的球队名称,但我试图打印更多,以便仔细检查查询是否正确