为什么MS Access 2010 SQL会阻塞此查询?
以下查询将不会显示在“设计”视图中,如果您试图使其显示,它将锁定MS Access,并且您必须使用任务管理器停止MS Access。查询实际运行并生成正确的结果。如果有更好的办法,我一定会接受的为什么MS Access 2010 SQL会阻塞此查询?,sql,ms-access,ms-access-2010,Sql,Ms Access,Ms Access 2010,以下查询将不会显示在“设计”视图中,如果您试图使其显示,它将锁定MS Access,并且您必须使用任务管理器停止MS Access。查询实际运行并生成正确的结果。如果有更好的办法,我一定会接受的 SELECT log_metric_N.metric_title, log_metric_N.metric_N FROM ( SELECT tref_log_metrics_weights_and_factors.metric_ti
SELECT
log_metric_N.metric_title,
log_metric_N.metric_N
FROM
(
SELECT
tref_log_metrics_weights_and_factors.metric_title,
[metric_base].[metric_count],
[metric_base].[metric_sum],
(([metric_base].[metric_count]*[tref_log_metrics_weights_and_factors].[metric_weight])/[metric_base].[metric_sum]) AS metric_N
FROM
tref_log_metrics_weights_and_factors,
(
SELECT
Count(tref_log_metrics_weights_and_factors.metric_weight) AS metric_count,
Sum(tref_log_metrics_weights_and_factors.metric_weight) AS metric_sum
FROM
tref_log_metrics_weights_and_factors
WHERE (((tref_log_metrics_weights_and_factors.metric_weight)<>0))
) as metric_base
) AS log_metric_N;
@汉瑟普:你说得对极了。我完全忘记了域函数,它们在没有复杂性的情况下可以完美地工作。下面是生成的SQL语句
SELECT
tref_log_metrics_weights_and_factors.metric_title,
DCount("[metric_weight]","tref_log_metrics_weights_and_factors","[metric_weight]<>0") AS metric_count,
Dsum("[metric_weight]","tref_log_metrics_weights_and_factors") AS metric_sum,
(([metric_count]*[tref_log_metrics_weights_and_factors].[metric_weight])/[metric_sum]) AS metric_N
FROM
tref_log_metrics_weights_and_factors
我不知道为什么它会被锁定,但我可以肯定地理解为什么它在设计视图中显示它会有困难。您已经导出了深入两层的表。我不确定它如何在SQL编辑器之外向您展示这样的东西。@jnevil派生表有什么问题吗?我不喜欢为了达到我想要的最终状态而进行大量的独立查询。此外,如果我移动/复制一个查询,但无法获得子查询,则会破坏主查询。派生表没有问题,事实上,我建议它们不要创建一堆查询和一些疯狂的命名约定,以保持所有查询的独立性。在SQL视图中而不是在设计视图中生成查询就可以了,因为Access可能无法为您提供多级deep语句的设计视图版本。如果您消除了与该度量基子查询的隐式交叉联接,并替换DCount和DSum表达式以获得聚合,设计视图是否仍然会阻塞您需要从tref_log_metrics_weights_和_factors获得的值?