两个表上的MS ACCESS SQL查询

时间:2014-10-20 15:18:32

标签: sql ms-access

我是SQL新手,无法设置此查询。我有两个表,一个包含有关团队的信息,名为TEAMS,如下所示:

小组

Name|City|Attendance
Jets|  NY| 50
...

另一个持有游戏信息,名为GAMES:

游戏

Home|Visitors|Date     |Result
Jets| Broncos| 1/1/2012| Tie
...

对于GAMES中的每一行,我将给出每个团队的名称和城市(主队和访问团队),游戏的日期和结果 - 总共六个字段。

现在我已经想出如何显示字段,但只能以一种方式显示一个团队的城市,而不是两者。这是我到目前为止的查询。我想我需要某种子查询,但无法弄清楚如何设置它。谢谢你的帮助。

SELECT Home, City AS [Home City], Visitors, City AS [Visitor City], Date, Result
FROM GAMES, TEAMS
WHERE Home=Name
ORDER BY Home DESC , Result DESC , Visitors DESC;

2 个答案:

答案 0 :(得分:2)

您需要两次使用TEAMS表(并且在其上,而不是在where条件中使用隐式连接,请使用显式加入..更清晰,更易于阅读):

select g.home, ht.city as home_city, 
       g.visitor, vt.city as visitor_city, 
       g.date, g.result
from (games as g
     inner join teams as ht on g.home = ht.name)
     inner join teams as vt on g.visitor = vt.name

我在这个示例中使用别名来缩短表名(g GAMES,{#1}}"主队"以及ht用于"访客团队")。请注意,我不是在vt子句中定义关系条件,而是直接在where子句中定义它(使用from)。

答案 1 :(得分:0)

您需要两次加入 TEAMS表。

SELECT Home, HomeTeam.City as Home_City, Visitors, VisTeam.City AS Vis_City,
  -- more field
FROM GAMES JOIN TEAMS AS HomeTeam
ON GAMES.Home=HomeTeam.Name
   JOIN TEAMS AS VisTeam ON GAMES.Visitors=VisTeam.Name;