sql - 访问查询:子程序集汇总
问题描述
我有一个包含产品材料清单的数据库,但其中一些项目是子组件。例如
普通产品(不相关,只是一个例子):
MyNormalProduct:
Item Name Quantity Cost
- Item 1 1 $50
- Item 2 1 $25
带有子组件的产品:
MySubAssemblyProduct:
Item Name Quantity Cost
- Item 1 1 $100
- Sub-Assembly Item 1
- Sub Part 1 1 $100
- Sub Part 2 1 $100
我需要做的是有一个查询,将所有子项目的成本汇总到报告的一行中。所以输出将如下所示:
Item Name Component Quantity Cost
MySubAssemblyProduct Item 1 1 $100
MySubAssemblyProduct Sub-Assembly Item 1 $200
为了帮助解决这个问题,我准备了三张桌子tblProducts
和.tblLink
tblItems
tbl产品:
这包含标题信息:
tbl链接:
一个帮助我链接产品的简单表格,如果其中有值,ParentItem
则链接是子组件。在图像中,红色项目是顶层,橙色项目是子装配。相关数量也存储在这里。你会看到MaterialProcessSKU
7 和 8 属于MaterialProcessSKU
6。
tblItems:
这是包含所有项目、相关成本和其他信息的表格。
我可以使用以下 SQL 获取子程序集的列表:
SELECT tblItems.Type, tblLink.SKU, tblItems.ItemNo, tblItems.[Item Name], tblItems.[Buy Quantity], tblLink.Quantity, tblItems.[Unit of Measure], tblItems.Waste, 0 AS [Laser Mins], 0 AS [Labour Mins], tblItems.Cost AS [$ Rate], ([tblLink].[Quantity]*[tblItems].[Cost])+(([tblLink].[Quantity]*[tblItems].[Cost])*[tblItems].[waste]) AS [$ Cost], tblLink.ParentItem
FROM (tblLink INNER JOIN tblProducts ON tblLink.SKU = tblProducts.SKU)
INNER JOIN tblItems ON tblLink.MaterialProcessSKU = tblItems.ItemNo
WHERE (((tblItems.Type)="Sub-Assembly") AND ((tblLink.ParentItem) Is Null));
我得到了这个输出,但显然$ Cost
是空白的:
我还可以使用此 SQL 获得子程序集的总数 - 你会看到我手动将其定义ParentItem
为6
:
SELECT Sum([Cost]*[Quantity]) AS TotalCost
FROM tblProducts, tblLink INNER JOIN tblItems ON tblLink.MaterialProcessSKU = tblItems.ItemNo
GROUP BY tblLink.SKU, tblLink.ParentItem, tblLink.Quantity, tblItems.Cost
HAVING (((tblLink.ParentItem)=6));
这是输出:
我需要合并两个 SQL 语句,以便在第一个 SQL 查询TotalCost
中从上面的 SQL 查询中获得$ Cost
。
请有人能指出我正确的方向吗?
谢谢克里斯
* 更新 *
我尝试从以下内容开始:
SELECT tblItems.ItemNo, c.TotalCost as NewCost
FROM tblItems
inner join (select tblItems.ParentItem from tblLink group by ParentItem) b on tblItems.ItemNo = b.ParentItem
inner join (select tblItems.ItemNo,sum(Cost) as TotalCost from tblItems group by tblItems.ItemNo) c on tblItems.ItemNo = b.ParentItem
但我收到语法错误(缺少运算符)。
有人可以帮忙吗?
解决方案
推荐阅读
- html - 春天 - @Deletapping
- mysql - 如何在时间范围和聚合上优化这个 MySQL 报告查询?
- bash - source .bash_profile 在 shell 脚本中不起作用。我能怎么做?
- javascript - 调查 JS 无线电计算
- javascript - 为什么 d3.select 不能与 html 按钮一起使用
- inno-setup - 为什么预处理器在#include 指令中的行为与在 [Files] 部分 Inno Setup 脚本中的行为不同
- c++ - 找不到assimp头文件
- java - Java Jackson 将普通 Json 数组或 Json 对象反序列化为单个 Java 对象 (POJO)
- regex - 如何使用“sed”获取字符串的一部分?
- ipad - 为什么在向后滑动时自动旋转无法正常工作?