不支持JOIN表达式,还是左联接?

时间:2019-08-09 22:07:36

标签: sql ms-access

当前正在调试一段代码以适合Access SQL查询。

代码如下:

select tk, tk2, count(*), count(a2.tk) / count(*) as ratio
from ((select distinct a.TK, a2.TK as tk2
       from access3 as a join
            access3 as a2 
            on (a.DocumentNo = a2.DocumentNo)
       where a.TK <> a2.TK
      ) tt left join
      access3 as a
      on (a.tk = tt.tk)
     ) left join
     access3 as a2
     on (a2.tk = tt.tk2 and a2.DocumentNo = a.DocumentNo)
group by tk, tk2;

我查了一下,发现了这个帖子

"join expression not supported" in Access

因此,我尝试放入括号。当我击中奔跑时,我需要排队

(a2.tk = tt.tk2 and a2.DocumentNo = a.DocumentNo) 

并突出显示它。所以这条线有些不受欢迎。

我想我了解如何重写联接代码,但是如何重写左联接代码以满足Access的挑剔要求?

或者,是否有更好的程序可以使用,我可以连接到Access并复制并粘贴代码?我尝试了免费版本的DBeaver,但我认为它处理起来太多了,因为它带回了200行查询(这是错误的),该查询花费了5分钟的加载时间,当我向下滚动时,它会重新查询并提取更多的数据,也错了。

在DB Fiddle中尝试了一个样本大小,并且可以完美地工作,因此代码可以正常工作,只是DBeaver由于某种原因未正确执行

1 个答案:

答案 0 :(得分:2)

join更改为inner join-MS Access无法自动将join解释为内部联接。

您可能还需要在字段tktk2前面加上表限定符,因为在您引用的表中似乎有多个具有这些名称的字段:

例如select tt.tk, tt.tk2, count(*), count(a2.tk) / count(*) as ratio