【发布时间】:2016-06-15 12:09:15
【问题描述】:
我在 Microsoft Access 中有三个表:
- 表 1 包括各个公司的名称和每个公司对应的唯一 ID(以及有关公司的其他唯一信息);
- 表2包括各公司自2013年以来的销售信息;
-
表 3 包括每个 2014 年的销售信息。
在表 2 和表 3 中,通常不止一次列出一家公司,对应于不同州的销售额。
在表 2 和表 3 中,公司名称实际上是其对应的 ID 号,我使用查找来显示名称。因此,Table1 是 Table2 和 Table3 的父级。
我想创建一个查询,将每家公司以及表 2 和表 3 中的销售额总和仅列出一次。当我只尝试使用 Table2 或 Table3 时,这很好用,但是当我将两者合并时,销售额是被一个常数标量夸大(例如,一家公司将显示销售额恰好是应有的 16 倍)。这是怎么回事?
这是 SQL 在 Access 中显示的内容:
SELECT Table2.CompanyName,
Sum(Table2.TotalRevenue) AS [2013 Revenue],
Sum(Table3.TotalRevenue) AS [2014 Revenue]
FROM (Table1 INNER JOIN Table2 ON Table1.Company_ID = Table2.CompanyName)
INNER JOIN Table3 ON Table1.Company_ID = Table3.CompanyName
GROUP BY Table2.CompanyName;
为什么要多次提取这些收入值?谢谢!
【问题讨论】:
-
您应该考虑将
TABLE2和TABLE3合并在一起,然后添加一个YEAR 字段。如果您继续增长一张表,那么将来会很乱。 -
也许您需要先阅读一些示例来了解数据库设计。多个表的问题是您需要每年修改查询,这不利于维护。想象一下有人忘记更新或负责人不在公司。您始终可以将旧数据从主表移动到历史表以减小大小。
-
啊,我没有考虑将来必须修改查询。这是一个很好的观点。
标签: sql ms-access query-designer