2

我刚开始使用 MS Access 2010 并进行了以下设置。3 个 excel 文件:masterlist.x(包含我销售的所有产品)、vender1.x(包含来自 vender1 的所有产品,我只销售其中一些产品)和 vender2.x(同样,包含来自 vender2 的所有产品,我只销售其中一些产品)。这是一个示例数据收集:

masterlist.x
ID     NAME     PRICE
23     bananas  .50
33     apples   .75
35     nuts     .87
38     raisins  .25

vender1.x
ID     NAME     PRICE
23     bananas  .50
25     pears    .88

vender2.x
ID     NAME     PRICE
33     apples   .75
35     nuts     .87
38     raisins  .25
49     kiwis    .88

供应商列表会定期更新出售的新商品和新价格。例如,vender1 将香蕉的价格提高到 0.75 美元,我的 masterlist.x 需要更新以反映这一点。

我现在在哪里:我知道如何将 3 个 excel 图表导入 Access。从那里开始,我一直在研究是否需要设置关系、创建宏或 SQL 查询来实现我的目标。不一定要寻找解决方案,但指出正确的方向会很棒!

此外,一旦 masterlist.x 表更新,我将使用什么功能来查看哪些行项目受到影响?

更新:发现 SQL /JOIN/ 并具有以下内容:

SELECT * FROM master
LEFT JOIN vender1
ON master.ID = vender1.ID
where master.PRICE <> vender1.PRICE;

这给了我输出(对于上述场景)

ID     NAME     PRICE    ID     NAME     PRICE
23     bananas  .50      23     bananas  .75

什么功能会给我:

masterlist.x
ID     NAME     PRICE
23     bananas  .75
33     apples   .75
35     nuts     .87
38     raisins  .25
4

1 回答 1

0

这是一个提醒,因为您正在寻求设计创意。我真的不喜欢你当前的表模式。以下查询是在 SQL Server 2008 中构建的,这是我可以在 sqlfiddle 中获得的最接近 MS Access SQL 的语法。

请看一下:

建议的表设计:

vendor桌子:

VID     VNAME
1       smp farms
2       coles
3       cold str
4       Anvil NSW

product桌子:

PID     VID     PNAME       PPRICE
203     2       bananas     0.5
205     2       pears       0.88
301     3       bananas     0.78
303     3       apples      0.75
305     3       nuts        0.87
308     3       raisins     0.25
409     4       kiwis       0.88

masterlist

ID  PID     MPRICE
1   203     0.5
2   303     0.75
3   305     0.87
4   308     0.25

加入查询可以轻松更新您的masterlist现在。例如:

当供应商更新他们为您提供的水果的价格时。或者当他们停止供应该产品时。您可以根据需要使用where子句将条件添加到查询中。

询问:

SELECT m.id, p.vid, p.pname, p.pprice
FROM masterlist m
LEFT JOIN product p ON p.pid = m.pid
;

结果:

ID  VID     PNAME       PPRICE
1   2   bananas     0.5
2   3   apples      0.75
3   3   nuts        0.87
4   3   raisins     0.25

请给出意见。如果有任何疑问,很乐意为您提供帮助。

于 2013-01-09T19:47:10.643 回答