繁体   English   中英

如何在 MS Access 中使用 RIGHT JOIN 连接表

[英]How to JOIN tables using RIGHT JOIN in MS Access

我对以下 SQL 有疑问:

SELECT tours_atp.NAME_T
      ,today_atp.TOUR
      ,today_atp.ID1
      ,today_atp.ID2
      ,qry_today_Elo_ov_prep_atp.LastOfnElo_Ov AS ID1_nElo_ov
FROM (today_atp INNER JOIN tours_atp ON today_atp.TOUR = tours_atp.ID_T)
INNER JOIN qry_today_Elo_ov_prep_atp ON today_atp.ID1 = qry_today_Elo_ov_prep_atp.ID
WHERE ((tours_atp.RANK_T Between 1 And 4) AND today_atp.RESULT="")
ORDER BY tours_atp.NAME_T;

它工作正常。

我现在想使用RIGHT JOIN将另一个表构建到查询中,如下所示:

RIGHT JOIN qry_today_Elo_sur1_prep_atp ON qry_today_Elo_sur1_prep_atp.ID = today_atp.ID1

我尝试将其添加到FROM的末尾,如下所示:

SELECT tours_atp.NAME_T, today_atp.TOUR, today_atp.ID1, today_atp.ID2, qry_today_Elo_ov_prep_atp.LastOfnElo_Ov AS ID1_nElo_ov
FROM ((today_atp INNER JOIN tours_atp ON today_atp.TOUR = tours_atp.ID_T) INNER JOIN qry_today_Elo_ov_prep_atp ON today_atp.ID1 = qry_today_Elo_ov_prep_atp.ID) RIGHT JOIN qry_today_Elo_sur1_prep_atp ON qry_today_Elo_sur1_prep_atp.ID = today_atp.ID1
WHERE (((tours_atp.RANK_T) Between 1 And 4) AND ((today_atp.RESULT)=""))
ORDER BY tours_atp.NAME_T;

但是,我收到“不支持 JOIN 表达式”错误 - 为什么会这样? 正确的语法是什么样的?

尝试将其粘贴到 SQL 编辑器中,让 MSAccess 添加它想要的 ():

SELECT tours_atp.NAME_T
     , today_atp.TOUR
     , today_atp.ID1
     , today_atp.ID2
     , qry_today_Elo_ov_prep_atp.LastOfnElo_Ov AS ID1_nElo_ov
FROM today_atp 
INNER JOIN tours_atp 
   ON today_atp.TOUR = tours_atp.ID_T
  and tours_atp.RANK_T Between 1 And 4
  and today_atp.RESULT=""
INNER JOIN qry_today_Elo_ov_prep_atp 
   ON today_atp.ID1 = qry_today_Elo_ov_prep_atp.ID
RIGHT JOIN qry_today_Elo_sur1_prep_atp 
   ON qry_today_Elo_sur1_prep_atp.ID = today_atp.ID1
ORDER BY tours_atp.NAME_T

或重新安排使用左...

SELECT tours_atp.NAME_T
     , today_atp.TOUR
     , today_atp.ID1
     , today_atp.ID2
     , qry_today_Elo_ov_prep_atp.LastOfnElo_Ov AS ID1_nElo_ov
FROM qry_today_Elo_sur1_prep_atp 
LEFT JOIN today_atp 
   ON qry_today_Elo_sur1_prep_atp.ID = today_atp.ID1
INNER JOIN tours_atp 
   ON today_atp.TOUR = tours_atp.ID_T
  and tours_atp.RANK_T Between 1 And 4
  and today_atp.RESULT=""
INNER JOIN qry_today_Elo_ov_prep_atp 
   ON today_atp.ID1 = qry_today_Elo_ov_prep_atp.ID 
ORDER BY tours_atp.NAME_T

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM