我有一个包含9个表的MS Access数据库。每个人都代表收集垃圾的垃圾填埋场。 这些表包含几个字段,主键是日期,其余字段是由几个城市发送到每个垃圾填埋场的垃圾吨位。 例如,对于表填埋场1:
date municipality 1 municipality 2
2014年1月1日50吨30吨
我正在尝试创建的查询是找出每个市政当局在特定日期向所有垃圾填埋场发送多少吨垃圾。 代码应该像......
SELECT Landfill_1.municipality_1, Landfill_2.municipality_1,...,Landfill_10.municipality_1
FROM Landfill_1.date INNER JOIN Landfill_2.date ,..., INNER JOIN Landfill_10.date
WHERE Landfill_1.date=[Please select the date:];
我的问题是,市政当局1 应该是一个变量,这样我每次都不需要改变它。
答案 0 :(得分:3)
取消传输源数据。在每一行中仅记录一组变量,并将市政和垃圾填埋标识符合并到密钥中。
Landfill, municipality, date, amount
1, 1, 1/1/2014, 50
2, 1, 1/1/2014, 30
使用查询
SELECT Landfill, municipality, date, SUM(amount)
GROUP BY Landfill, municipality, date
返回聚合结果,然后将结果转移到Access或Excel中。
避免数据库中未规范化的数据以允许更一般的查询。结果的呈现不应该是数据库模式设计的主要考虑因素。
这也扩展到任何数量的垃圾填埋场和城市,没有进一步的数据库架构变化。
答案 1 :(得分:0)
将所有表中的数据附加到一个具有添加字段的单个表:MunicipalityId。用1到9填充,记录来自哪个表。
在复合唯一索引中使用此字段和日期字段。
现在只需要一个查询。