当前正在调试一段代码以适合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由于某种原因未正确执行
。答案 0 :(得分:2)
将join
更改为inner join
-MS Access无法自动将join
解释为内部联接。
您可能还需要在字段tk
和tk2
前面加上表限定符,因为在您引用的表中似乎有多个具有这些名称的字段:
例如select tt.tk, tt.tk2, count(*), count(a2.tk) / count(*) as ratio