我正在尝试实施一些现有Access数据库,这些更改将允许估计我的雇主(我们是制造飞行案例的工业公司)的裁剪时间。这只适用于某些类型的组件;我们有一个Stock
表,其中包含每个库存项目的信息,包括它的类别。 A Specification
用于建立估计/报价的表以及名为的表,其中包含附加到规范的库存项目清单。 Stock INNER JOIN [Spec Components] ON Stock.ID = [Spec Components].[Stock ID]
使用MS Access从两个表中左外连接
Specification INNER JOIN [Spec Components] ON Specification.SpecID = [Spec Components].[Spec ID]
我的问题是,我只是想,如果该项目被列为“板”,“挤出应用刀次项目中:
该表可如下加入“,”混合物“等(这是可以通过Stock.Category
查询的信息),并且根据我们引用的物品的类型使用不同的变量,例如,制造盖盒的面板可能需要18次切割,但可能需要不同的情况要求26.案件类型是可以通过Specification.CaseType
检索的东西,并确定哪种类型的cas我们正在引用。
最初我试图解决这个问题,在SQL查询中使用嵌套条件语句的快速和肮脏的解决方案,但最终得到错误“查询太复杂”,因为嵌套的ifs数量有限制。
什么我试图现在是使用一个单独的表包含了不同的切割/设置等的列表
Category | CaseType | Setups | Cuts | PCID
--------------------------------------------
Panels | Lidmaker | 2 | 32 | 1
Panels | Fab Lid | 4 | 16 | 1
Extrusion | Lidmaker | 1 | 24 | 1
然后我需要能够在适用情况下访问此表的内容,但仍然能够从我的其他表格中检索表格的内容不适用(对我来说,这表示需要在此表格上进行左外连接)。当我运行查询我得到这个消息
不过,但我真的不明白它告诉我做什么,或者如何在地球上:
我可以在MS Access做到这一点使用设计视图我应该分开查询,也许我很愚蠢?
查询本身是这样的:
SELECT [Spec Components].Qty, Specification.Height, Specification.Width, Specification.Depth, IIf(Cutting.Cuts>0 And Cutting.Setup>0,(Cutting.Cuts*Stock.CutTime)+(Cutting.Setup*Stock.SetupTime),0)
FROM ((Stock INNER JOIN [Spec Components] ON Stock.ID = [Spec Components].[Stock ID]) INNER JOIN Specification ON [Spec Components].[Spec ID] = Specification.SpecID) LEFT JOIN Cutting ON (Stock.Category = Cutting.Category) AND (Specification.[Case Type] = Cutting.CaseType)
ORDER BY [Spec Components].[Stock ID];
如果规范最终会使用INNER JOINS返回库存,则不能使用从Cutting到Specification的LEFT OUTER JOINS。它使你的外部连接不明确。您可能需要设置两个单独的查询,然后将它们连接在一起以获取所需内容。 –