我尝试了很多SQL连接并搜索了stackoverflow,但无济于事。
实际上,我有一个带两张桌子的棒球数据库。 A"团队" table(有一个team_id和team_name)和一个"游戏"表(当一个团队扮演另一个团队,何时,何地等)。
我想创建一个给出teams.team_name值的SQL查询,该查询返回给定团队最后10场比赛(在#34; home"在他们的体育场内,或者#34;离开& #34;在竞争对手的体育场),以及给定游戏中两队的名称(teams.team_name),基于游戏表中相应的teams.team_id。
表:
排#1(team_id)1,(team_name)"洋基队"
排名#2(team_id)2,(team_name)" LA Dodgers"
排名#2(team_id)3,(team_name)" Red Sox"
...
行#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查询是:
"主队" -----"客队" ----"约会时间"
Yankees ----------- LA Dodgers ------ ## / ## / ####
Red Sox ----------- LA Dodgers ------ ## / ## / ####
洛杉矶道奇队------红袜队---------- ## / ## / ####
这个查询几乎得到了我需要的输出,但是我想要" 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;
答案 0 :(得分:3)
一般情况下,如果您想在一个查询中多次使用同一个表(可能是两种不同的容量),您可以为表格提供别名 - 您在表格后面列出的名称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
子句中。这是一个更清晰的语法,应该在带有连接的查询中使用。