【发布时间】:2021-12-25 09:57:13
【问题描述】:
我有三张桌子。
“部门”表:department_name、department_id。
表“LowPrice”:departmend_id、product_name、购买、出售、价格。
表“基本”:departmend_id、product_name、购买、出售、价格。
在“基本”和“低”表中,可以有几条属于一个部门的记录。
这些表之间没有关系。我想开发一个查询,该查询将按 Departments 表中的部门编号对 Low 和 Basic 表中的记录进行分组。分组时,将每个部门的“基本”和“低价”表中销售和购买商品的成本相加。
我的查询代码:
SELECT Departments.departmend_id,
Sum([Basic]![purchased] [Basic]![price]) AS PurchasedBasic
Sum([Basic]![sold] [Basic]![price]) AS SoldBasic,
Sum([Basic]![purchased] [Basic]![price]) - Sum([Basic]![sold][Basic]![price]) AS DiffBasic,
Sum([LowPrice]![purchased] [LowPrice]![price]) AS PurchasedLowPrice,
Sum([LowPrice]![sold] [LowPrice]![price]) AS SoldLowPrice,
Sum([LowPrice]![purchased] [LowPrice]![price]) - Sum([LowPrice]![sold] [LowPrice]![price]) AS DiffLowPrice
FROM (Departments LEFT JOIN Basic ON Departments.departmend_id = Basic.departmend_id) LEFT JOIN LowPrice ON Departments.departmend_id = LowPrice.departmend_id
GROUPBY Departments.departmend_id;
但是现在只有那些只有一张表有记录的部门才算正确。如果两个表中有一个部门的记录,那么它们的数量会相乘,并且查询会给出错误的结果。
请告诉我我需要在查询中更改什么。
【问题讨论】:
-
能否请您添加源数据样本,以及您获得的结果与您的预期?你的 dbms 是什么?
-
@Christophe 我添加了示例数据和预期结果。我使用 MS Access
-
好的,所以我提出的答案不适合这个工具,我将无法提供帮助:-/
-
为
LowPrice和Basic创建一个子查询。将这些按department_id分组以重新加入部门。