两个查询之间的内部联接导致“无效操作”
Posted
技术标签:
【中文标题】两个查询之间的内部联接导致“无效操作”【英文标题】:Inner Join between 2 queries resulting in "Invalid Operation" 【发布时间】:2015-09-21 16:17:06 【问题描述】:为了创建满足某些条件的订单列表(每个包含多个项目),我尝试创建一个典型的LEFT JOIN
语句。
尝试看起来像这样
SELECT
Q1.Order_Number,
OD.Item_Num
FROM
(
SELECT
OS.Order_Number
FROM
[4-Open_Order_Summary] AS OS
WHERE
Date() >= OS.Ship_Date AND
OS.Back_Ordered > 0
)
AS Q1
LEFT JOIN [1-Open_Order_Data] AS OD
ON Q1.Order_Number = OD.Order_Number
运行此查询会给我一个无法解释的“无效操作”错误。研究有关 Access SQL 的此错误使我在 *** 上提出了与多个不同类型的多个 JOIN
语句有关的 this 问题,以及与 FULL OUTER JOIN
语句有关的 SuperUser 分支上的 this 问题。但是,我找不到与单个 LEFT JOIN
语句相关的问题。
为了解决这个问题,我做了以下事情;
更改ON Q1.Order_Number = OD.Order_Number
为ON Q1.Order_Number LIKE OD.Order_Number
访问崩溃
跑步
SELECT
Q1.Order_Number,
FROM
(
SELECT
OS.Order_Number
FROM
[4-Open_Order_Summary] AS OS
WHERE
Date() >= OS.Ship_Date AND
OS.Back_Ordered > 0
)
AS Q1
返回预期的订单号。
【问题讨论】:
【参考方案1】:如果您想从一个表中获取订单号,并从另一个表中获取相关的订单详细信息,为什么不尝试以下方法?
SELECT
Q1.Order_Number
OD.Item_Num
FROM
[4-Open_Order_Summary] Q1
LEFT JOIN
[1-Open_Order_Data] OD
ON
OD.Order_Number = Q1.Order_Number
WHERE
DATE() >= Q1.Ship_Date
AND Q1.Back_Ordered > 0
【讨论】:
这确实解决了我的问题,并获得了预期的结果。我计划把这个问题留到明天,以防其他人看到这可以用一些语法知识来解释为什么我所做的不起作用。感谢您的帮助! 附带说明,您可以在此处使用 INNER JOIN。这将允许您仅根据您的 ON 条件提取两个表中存在的记录。以上是关于两个查询之间的内部联接导致“无效操作”的主要内容,如果未能解决你的问题,请参考以下文章
带有内部联接和子查询的 Microsoft Access 更新语句
使用运算符一次(内部联接)使用第一个查询的参数执行两个 firebase 查询?