Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么MS Access 2010 SQL会阻塞此查询?_Sql_Ms Access_Ms Access 2010 - Fatal编程技术网

为什么MS Access 2010 SQL会阻塞此查询?

为什么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

以下查询将不会显示在“设计”视图中,如果您试图使其显示,它将锁定MS Access,并且您必须使用任务管理器停止MS Access。查询实际运行并生成正确的结果。如果有更好的办法,我一定会接受的

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获得的值?