我尝试过许多SQL联接,并搜索了堆栈溢出,但都没有效果。
实际上,我有一个有两张桌子的棒球数据库。一个“团队”表(有一个team_id和team_name)和一个“游戏”表(用于一支球队玩另一支球队时、何时、何地等)。
我希望创建一个给定teams.team_name值的SQL查询,该查询将返回给定团队(在其体育场的“主场”或在竞争对手体育场“客场”)所玩的最后10场比赛,以及根据游戏表中相应的teams.team_id,在给定游戏中两队的名称(teams.team_name)。
表:
团队
第1行(team_id) 1,(team_name)“北方佬” 第2行(team_id) 2,(team_name)“洛杉矶道奇队” 第2行(team_id) 3,(team_name)“红袜” ..。
游戏
第1行(game_id) 1,(home_team_id) 1,(away_team_id) 2,(date_played) 第2行(game_id) 2,(home_team_id) 3,(away_team_id) 2,(date_played) 第3行(game_id) 3,(home_team_id) 2,(away_team_id) 3,(date_played)
我希望返回的SQL查询是:
“主场队”??“客队”??“约会队” 洋基-洛杉矶道奇队 红袜?洛杉矶道奇队?##/# 红袜队#
这个查询几乎获得了我所需的输出,但是我希望从"teams“表中获得"team_name”,但是将它添加到SELECT中会产生问题的输出。
SELECT games.home_team_id,
games.away_team_id
FROM games,
teams
WHERE games.home_team_id = teams.team_id
AND teams.team_name = "Yankees"
OR games.away_team_id = teams.team_id
AND teams.team_name = "Yankees"
ORDER BY games.date_played DESC LIMIT 0, 10;发布于 2016-04-24 11:12:05
通常,当您希望在单个查询中多次使用相同的表时(大概是以两种不同的身份),您可以为您的表提供一个别名--在FROM或JOIN子句中的表名后面列出的名称:
SELECT h.team_name, a.team_name, g.date_played
FROM Games g
JOIN Teams h ON h.team_id = g.home_team_id
JOIN Teams a ON a.team_id = g.away_team_id
WHERE ...g、h和a是各自表的别名。
注意使用JOIN语法,而不是列出FROM子句中的所有表,并在WHERE子句中约束它们。这是一种更简洁的语法,应该在带有联接的查询中使用。
https://stackoverflow.com/questions/36822278
复制相似问题