SQL虚拟表

时间:2009-12-18 16:47:24

标签: sql ms-access ms-access-2003

我的数据库设置如下:

我拥有的每件产品都有自己的表格,用于记录销售数量/交易#(因此第1列为“transactionID”,第2列为“数量”)

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

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

ex)销售额 - 2008年,销售额 - 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 个答案:

答案 0 :(得分:4)

在SQL中,正如Kyle的回答所述,你可以创建一个 View ,这是一种虚拟表,但我强烈建议你拿一本书,或者谷歌, 关系数据库设计 ,然后再提交到数据库结构。

答案 1 :(得分:2)

  

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

这就是为什么你不应该每个产品和一个表每年使用一个表。

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

答案 2 :(得分:1)

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

答案 3 :(得分:-2)

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

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

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

相关问题