【问题标题】:MS Access SQL - UNION Returns Empty SetMS Access SQL - UNION 返回空集
【发布时间】:2017-07-30 06:33:36
【问题描述】:

我在 Access 中遇到了一个奇怪的行为。我的 VBA 项目中基本上有两个预定义的查询,它们在程序的不同部分都需要,它们运行良好。

现在我需要一个将两个结果集作为一个返回的查询。所以我去解决方案是创建一个结合其他两个查询的新查询。就像:

SELECT * FROM query1
UNION
SELECT * FROM query2;

两个查询在其结果中具有相同的布局。但是,如果 query1 的结果为空并且 query2 在其结果中有一些记录,我会从上面的代码中收到一个空结果。另一种方式(query2 的空结果 - query1 的几个结果)它为我提供了一个完整的结果。

我还在切换两个查询的情况下测试了上面的代码。但行为是一样的。 UNION ALL 也是如此。

这可能是什么问题?

编辑:所以,我做了一些进一步的测试。原因似乎在query2中。它甚至不能与自己联合。所以如果我尝试:

SELECT * FROM query2
UNION ALL
SELECT * FROM query2;

我又得到了一个空集。当我只在 SELECT 部分中使用一个字段时也是如此。

Edit2:好的,它会变得更好。数据集是空的,但在查询结果的表视图中,我在列的过滤器中拥有所有数据。但是如果我做一个 Count(rowname) 我得到一个 0 作为回报。

【问题讨论】:

  • 尝试列出字段而不是使用*
  • 遗憾的是,这并没有解决问题。但是感谢您的尝试。 ;)
  • 明确一点,当两个查询都至少有一条记录时,或者如果 query2 至少有一条记录,一切都按预期工作?只有当 query1 没有返回记录时才会出现问题?你能提供这些查询的 SQL 吗?您是否尝试过用完整的 SQL 代码替换 query1query2?这可能会给你一个有意义的错误。
  • 不,即使查询 2 中有结果,UNION 也总是失败。经过两天的测试,我受够了并将代码移到另一台机器上。在那里工作。因此,在将其导出到新机器并将其传输到我的 PC 后,一切都正常运行。所以我想这是与我使用的前端有关的问题。 :/但仍然是一个很大的“谢谢!”供您输入。 ;)

标签: sql ms-access vba


【解决方案1】:

经过两天的测试,我受够了,将代码移到另一台机器上。在那里工作。因此,在将其导出到新机器并将其传输到我的 PC 后,一切都正常运行。所以我猜这是与我使用的前端有关的问题。

所以,如果你遇到了 smth。类似地确保您的项目没有以任何方式损坏。 (即使 Access 没有显示任何错误)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-05
    • 1970-01-01
    • 2014-04-20
    • 1970-01-01
    相关资源
    最近更新 更多