【发布时间】:2017-07-13 20:04:08
【问题描述】:
我有以下 SQL 字符串,它尝试在 FROM 部分中将 INNER JOIN 与 LEFT JOIN 结合起来。
如您所见,我使用表 VIP_APP_VIP_SCENARIO_DETAIL_LE 来执行查询。当我对这个表使用它时,Access 给我一个“无效操作”错误。
有趣的是,当我使用 VIP_APP_VIP_SCENARIO_DETAIL_BUDGET 或 VIP_APP_VIP_SCENARIO_DETAIL_ACTUALS 表使用 EXACT 相同的查询时,它完美地执行。
那么为什么它可以在两张桌子上工作,而在另一张桌子上却不行?所有字段都在所有表中,数据类型正确。
附带说明:在出现错误的查询中,如果我将 LEFT JOIN 更改为 INNER JOIN,它运行没有问题!不过我真的需要一个 LEFT JOIN。
SELECT
D.MATERIAL_NUMBER,
D.MATERIAL_DESCRIPTION,
D.PRODUCTION_LOT_SIZE,
D.STANDARDS_NAME,
D.WORK_CENTER,
S.OP_SHORT_TEXT,
S.OPERATION_CODE,
D.LINE_SPEED_UPM,
D.PERCENT_STD,
D.EQUIPMENT_SU,
D.EQUIPMENT_CU,
D.OPERATOR_NUM,
V.COSTING_LOT_SIZE,
V.VOL_TOTAL_ADJ
FROM
([STDS_SCENARIO: TEST] AS D INNER JOIN MASTER_SUMMARY AS S ON
D.MATERIAL_NUMBER = S.MATERIAL_NUMBER AND D.WORK_CENTER = S.WORK_CENTER)
LEFT JOIN
(SELECT ITEM_CODE, COSTING_LOT_SIZE, VOL_TOTAL_ADJ
FROM
VIP_APP_VIP_SCENARIO_DETAIL_LE
WHERE SCENARIO_ID = 16968) AS V ON D.MATERIAL_NUMBER = V.ITEM_CODE
ORDER BY D.MATERIAL_NUMBER, D.STANDARDS_NAME, S.OPERATION_CODE;
【问题讨论】:
-
您是否尝试过将子查询放在它自己的查询中,然后使用它而不是子查询?
-
嗨,Erik - 不确定你的意思。当我自己测试时,左连接的子选择部分工作正常。作为左连接的一部分,它没有。奇怪的是,当我将其更改为 INNER 连接时,它工作正常。将其改回左连接,它再次不起作用。