0

我的数据库设置如下:

我拥有的每个产品都有自己的表格,其中记录了销售/交易的数量(所以第 1 列是“transactionID”,第 2 列是“数量”)

ex) p-backScratcher(其中 p- 表示“产品”)

每年还有一些表格,其中保存了每笔交易的记录。这些表中的每一个都包含以下列:“transactionID”、“date”、“time”、“pt_CA”、“pt_DB”、“pt_VC”、“pt_MC”、“pt_CH”、“pt_AM”

例如)sales-2008、sales-2009 等。

我希望能够引用一个包含每年所有记录的表,而无需更改表的 sql 以包含新的一年。

例如,我想查询“p-backScratcher”的所有交易,我不想输入

SELECT sales-2008.date, sales-2009.date 
  FROM sales-2008, sales-2009 
 WHERE sales-2008.transactionID = p-backScratcher.transactionID 
    OR sales-2009.transactionID = p-backScratcher.transactionID

...反而:

SELECT sales.date 
  FROM sales 
 WHERE sales.transactionID = p-backScratcher.transactionID
4

4 回答 4

4

正如 Kyle 的回答所说,在 SQL 中,您可以创建一个View,它是一种虚拟表,但我强烈建议您在致力于数据库结构之前 获得一本书或谷歌, Relational database design 。

于 2009-12-18T16:50:35.197 回答
2

我希望能够引用一个包含每年所有记录的表,而无需更改表的 sql 以包含新的一年。

这就是为什么您不应该为每个产品使用一张桌子而每年使用一张桌子。

您需要的是一张“产品”表和一张“交易”表。

于 2009-12-18T16:52:58.247 回答
1

您要查找的内容称为“视图”,它几乎是一个存储语句,是格式正确的结果列表。您可以直接查询它,就像它是一个表一样。

于 2009-12-18T16:48:10.913 回答
-2

不确定这个项目有多大或您的具体要求是什么(例如,如果您有与之关联的代码),但您可能希望考虑将数据迁移到 MS SQL(或 MySQL 等)。SQL Server 有一个免费的桌面版,但仅支持有限的功能集(其中包含视图)。

MySQL、PostGre 等支持您正在寻找的功能,包括 PostGre 中的继承表(不完全是您需要的,但类似)。

我有一段时间没有使用 Access,我不确定它是否支持您正在寻找的功能。

于 2009-12-18T17:02:05.763 回答