从 MS-Access 中联合选择查询中的 SQLite 语法错误
Posted
技术标签:
【中文标题】从 MS-Access 中联合选择查询中的 SQLite 语法错误【英文标题】:SQLite Syntax Error In Union Select Query From MS-Access 【发布时间】:2011-11-30 16:37:37 【问题描述】:在一个全新的 MS Access 2010 数据库中,我使用 ODBC 连接从 SQLite 数据库链接到两个表。我有以下联合查询:
SELECT Calibration_Header.Gage_ID FROM Calibration_Header
UNION SELECT CHArchive.Gage_ID FROM CHArchive;
如果我使用 sqlite3 命令行应用程序对同一个数据库执行此 SQL,它会成功运行并返回正确的数据。当我在 MS Access 2010 数据库中运行查询时,我收到以下错误消息:
ODBC--call failed.
near "(": syntax error (1) (#1)
针对不同表的其他联合查询在 MS Access 中运行时会收到相同的错误消息。在 sqlite3 命令行中运行时,它们运行成功并返回正确的数据。
【问题讨论】:
感谢您的信息。这针对的前端数据库将能够使用 Access 或 SQLite 作为后端数据库,因此传递查询并不理想。 联合查询不是最终应用程序的标准解决方案。也许你可以多说一点你想做的事情,有人可能会提供横向解决方案? 记录可以存档,这会将它们从常规表中取出并放入存档表中。表单中的多个组合框需要能够查看所有记录的量具 ID,无论是存档的还是未存档的。联合查询是驱动那些组合框。我可以创建每次打开表单时都会填写的临时表,但这是我希望避免的开销。 【参考方案1】:我怀疑 UNION SELECT 不是标准的 Access 白话。您可以尝试在 Access 2010 中实现 ANSI-92,然后将查询作为代码运行,如 Albert Kallal 在http://www.utteraccess.com/forum/Create-View-Access-t1924479.html&p=1924500#entry1924500 中所述。我使用这些说明成功创建了一个 Access“视图”。
【讨论】:
UNION SELECT 是标准访问。那里没有问题。我认为问题在于 Access 在处理源表的外部链接时使用 Union 时遇到问题。在这种情况下,OP 的“存档表”(或我称之为暂存表)的想法会更好。【参考方案2】:我意识到这是一个非常古老的线程,但我刚刚遇到了这个问题并找到了一个非常简单的解决方案,所以认为值得分享以防其他人遇到问题。尽管 Access 似乎无法对两个链接表运行 UNION 查询,但如果您创建一个传递查询并将 UNION 的 SQL 放入其中,它就可以正常工作。据推测,SQL 然后由 SQLite 执行,结果作为单个结果集返回,而不是 Access 本身试图将 UNION 应用于两个单独的结果集。
我无法在早期版本中进行测试,但它可以在 Access 2016 中使用。
【讨论】:
以上是关于从 MS-Access 中联合选择查询中的 SQLite 语法错误的主要内容,如果未能解决你的问题,请参考以下文章