0

我对访问还很陌生,我需要对设置两个表的方式有所了解。我从事跟踪设备采购的业务。我有一张表,其中包含主要单位、数量、品牌/型号信息以及其他一些购买细节。我们有与每个主要单元相关联的唯一编号。因此,假设我们要订购一台电视,该号码一直是 12345。好吧,现在我们需要单独跟踪配件,我认为最好有一个单独的配件表。我遇到的问题是,因为配件的数量和数量可能不同,这让我的数量减少了。当我运行查询或报告时,它会显示主单元的多条记录。

我希望查询像这样单独列出行。

 ID    Desc    Qty    Type
12345   TV      3   Main Unit 
12345   Cable   3   Accessory 
12345   Mount   2   Accessory 

相反,它两次列出了第一行,所以看起来总共有 6 个单位。

12345   TV   3   Accessory   Cable   3 
12345   TV   3   Accessory   Mount   2 

这可能是一个简单的修复,我只是在放屁,或者我应该把配件放在主桌子上,我不确定。任何建议/见解将不胜感激。

4

2 回答 2

0

正如我上面所说,您实际上在这里处理的是多对多关系。因此,您将需要一个“人行横道”表。以下是您的设置方式:

1)电视表将有TVID(主键,唯一),电视名称,数量,制造商等...

2)附件表将有附件ID(主键,唯一),附件名称,数量,制造商等...

3) Crosswalk 表将有 TVID 和 AccessoryID,没有主键。您可以在此处输入您可能拥有的每个 TVID 和 AccessoryID 组合。例子:

TVID         AccessoryID
12345         666
12345         777
12345         888
55555         777
55555         888

假设 12345 是 TV1,55555 是 TV 2。现在您知道 TV1 可以使用附件编号 666、777 和 888,而 TV2 可以使用附件编号 777 和 888。

从电视桌到人行横道桌的一对多。从附件表到人行横道表的一对多。

嘘!那应该可以解决您的问题。如果您在此之后无法弄清楚如何让您的查询工作,请告诉我,我会看看我是否可以指导您完成剩下的工作。

于 2013-10-23T15:22:54.610 回答
0

如果主表中的每个单元都有许多附件,则您需要在两者之间建立多对一的关系。

将外键列添加到附件表中,并将其设置为它所属的主表中项目的主键。

create table main (
    id identity, 
    primary key(id)
);

create table accessory (
    id identity,
    parent_id int,
    primary key(id),
    foreign key(parent_id) references main
);

因此,现在您在 main 中创建行,每个行都有自己的主键 ID。我们称它们为 main(id)。您将拥有与主键和外键值相关联的附件行。我们称它们为附件(id,parent_id)。

INSERT row into main 为您提供 main(1)。

在与 main 中的第一行关联的附件中插入三行,为您提供附件(1、1)、附件(2、1)、附件(3、1)。

使用 JOIN 将它们组合在一起:

select *
from accessory
join main
on accessory.parent_id = main.id

我认为您会对 Access 有疑问,因为它是为不太了解关系数据库或 SQL 的非技术人员设计的。如果您使用 UI 创建表,则必须正确添加关联外键,否则它将不起作用。

于 2013-10-22T16:00:32.170 回答