(我认为)SQL出现了一些问题。我在这里不是专家,但已经读到,多个连接需要用括号括起来,但是我无法完成这项工作。
也许这甚至不是问题,这很可能归因于我没有完全了解这里到底发生了什么!如果有人可以告诉我我在这里做了什么愚蠢的事情,那将是很棒的!
当我打开列表框引用该查询的表单时 ComponentFinalHomeListboxQuery 我得到:
“查询表达式中的语法错误(缺少运算符) '[DatabaseComponentID] ='。
列表仍会填充,但在每个记录出现在列表框中之前都会显示错误。
将ComponentMasterCostQuery.DatabaseComponentID
和Components.MasterDatabasecomponentID
之间的连接从右向内更改可修复该错误,但不会显示我需要的记录。我正在尝试显示 Components 表中的所有记录,并且仅显示 ComponentMasterCostQuerywhere 中的记录相等的字段。
当用户将组件添加到数据库时,我需要它出现在此列表框中,以便他们可以选择它并添加存储在其他表中的其他相关信息。输入完所有信息后, ComponentMasterCostQuery 计算制造组件的成本, ComponentFinalHomeListboxQuery 会选择此成本,并在带有项目的列表框中显示成本。
这是该查询中的SQL:
SELECT
ComponentMasterCostQuery.DatabaseComponentID
, Components.KadComponentID
, Components.ComponentName
, ComponentTypes.Type
, ComponentMasterCostQuery.PerPartMaterialCost
, ComponentMasterCostQuery.OperationsCost
, ComponentMasterCostQuery.TotalManufactureCost
FROM
ComponentTypes
RIGHT JOIN
(ComponentMasterCostQuery
RIGHT JOIN
Components
ON
ComponentMasterCostQuery.DatabaseComponentID = Components.MasterDatabasecomponentID)
ON
ComponentTypes.ID = Components.ComponentType
很抱歉,这很愚蠢,使我无法从自己的错误中进行访问学习!
感谢您的阅读! 瑞安
答案 0 :(得分:0)
您缺少=
。但是别名使查询更易于编写和阅读:
SELECT cmcq.DatabaseComponentID, c.KadComponentID, c.ComponentName, ct.Type,
cmcq.PerPartMaterialCost, cmcq.OperationsCost, cmcq.TotalManufactureCost
FROM ComponentTypes as ct RIGHT JOIN
(ComponentMasterCostQuery as cmcq RIGHT JOIN
Components as c
ON cmcq.DatabaseComponentID = c.MasterDatabasecomponentID
)
ON ct.ID = c.ComponentType;
我更喜欢LEFT JOIN
。实际上,我几乎从不使用RIGHT JOIN
。但是我没有更改您的查询。