Ms Access SQL中的多权限联接问题,返回语法错误

时间:2018-10-19 23:25:10

标签: sql ms-access

(我认为)SQL出现了一些问题。我在这里不是专家,但已经读到,多个连接需要用括号括起来,但是我无法完成这项工作。

也许这甚至不是问题,这很可能归因于我没有完全了解这里到底发生了什么!如果有人可以告诉我我在这里做了什么愚蠢的事情,那将是很棒的!

当我打开列表框引用该查询的表单时 ComponentFinalHomeListboxQuery 我得到:

  

“查询表达式中的语法错误(缺少运算符)   '[DatabaseComponentID] ='。

列表仍会填充,但在每个记录出现在列表框中之前都会显示错误。

ComponentMasterCostQuery.DatabaseComponentIDComponents.MasterDatabasecomponentID之间的连接从右向内更改可修复该错误,但不会显示我需要的记录。我正在尝试显示 Components 表中的所有记录,并且仅显示 ComponentMasterCostQuerywhere 中的记录相等的字段。

当用户将组件添加到数据库时,我需要它出现在此列表框中,以便他们可以选择它并添加存储在其他表中的其他相关信息。输入完所有信息后, ComponentMasterCostQuery 计算制造组件的成本, ComponentFinalHomeListboxQuery 会选择此成本,并在带有项目的列表框中显示成本。

  • Components 是一个主表,其中包含所有组件ID,名称和类型(从 ComponentTypes 表中提取)。
  • ComponentTypes 只是每个组件分配的类型的列表。

这是该查询中的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

很抱歉,这很愚蠢,使我无法从自己的错误中进行访问学习!

感谢您的阅读! 瑞安

1 个答案:

答案 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。但是我没有更改您的查询。