qFieldInner
PARAMETERS pText1 Text ( 255 );
SELECT entries.en_main, MIN(entries.en_id) AS en_id
FROM entries
WHERE (((entries.en_main) In (625, 1310)))
GROUP BY en_main;
当我运行这个查询时它返回:
625 76719
1310 177239
但是,如果我将其转换为:
PARAMETERS pText1 Text ( 255 );
SELECT entries.en_main, MIN(entries.en_id) AS en_id
FROM entries
WHERE (((entries.en_main) In (SELECT en_main FROM qFieldInnest)))
GROUP BY en_main;
然后它就会挂起。
qFieldInnest 是这个,当我手动运行它时正确返回 625 和 1310
PARAMETERS pText1 Text ( 255 );
SELECT DISTINCT entries.en_main
FROM entries
WHERE (((entries.en_lect) Like ("* " & [pText1] & "*") Or (entries.en_lect) Like ([pText1] & "*")) AND ((entries.en_ref)=0) AND (((entries.en_se)=1) OR ((entries.en_meros)=6))) OR (((entries.en_thama) Like ("* " & [pText1] & "*") Or (entries.en_thama) Like ([pText1] & "*")));
我不明白这里出了什么问题。
最佳答案
我会用一个查询来解决这个问题,该查询使用 qFieldInnest
中的 SQL 作为子查询,INNER JOIN
子查询到 entries
表.
qFieldInnest
中的WHERE
子句对我来说很难理解。它也将挑战数据库引擎,因为它必须完成大量的工作。
我没有什么可测试的,所以不确定我是否在以下 SQL 中出错。如果它不起作用,请将子查询 SQL 分解为一个新查询并单独测试。
PARAMETERS pText1 Text ( 255 );
SELECT e.en_main, MIN(e.en_id) AS en_id
FROM
entries AS e
INNER JOIN
(
SELECT DISTINCT en_main
FROM entries
WHERE
(
(
en_lect Like "* " & [pText1] & "*"
Or en_lect Like [pText1] & "*"
)
AND en_ref=0
AND
(
en_se=1
OR en_meros=6
)
)
OR
(
en_thama Like "* " & [pText1] & "*"
Or en_thama Like [pText1] & "*"
)
) AS sub
ON e.en_main = sub.en_main
GROUP BY e.en_main;
关于database - ms Access 查询挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13958370/