免责声明:我上周才开始使用Access进行实习,所以请耐心等待,我仍然不太了解它或它背后的理论。
在网上阅读并观看了许多教程之后,我以为我准备好开始在MS Access上创建数据库了,尽管我担心我错了。
为我提供了一个可以处理超过75,000行的Excel文件,但是我一直在努力,因为大多数教程似乎都相当讲解了数据库,其中通常是从头开始填充表。
我有我的主表X,其中主键称为NIF(表示葡萄牙语的财务编号),每个数字代表一个唯一的公司。除了许多其他字段外,我还有5列名为Banco_1,Banco_2,...,简单来说,每个公司可以在5家不同的银行中拥有一个帐户。然后,我创建了另一个表Y,在其中为每个可能的银行分配了一个数字-主键,即自动编号(Bank_ID)。
因为我认为这是多对多的关系,所以我以为我必须创建一个桥接表Z,它具有唯一的PK(也是一个自动编号),在其中可以将NIF和Y的PK都查找为异域键。因此,如果特定的NIF有5个不同的银行帐户,则最多可以重复5次。
我尝试对表运行选择查询,但对我而言,这是行不通的。 NIF将一次又一次地重复,并且Bank_ID字段中将没有值,或者它将是一个完全随机的数字。我确定我做错了所有事情。
如何创建一个基本上可以用作桥接表的表,而无需在excel中操纵数据并将其导入以进行访问?我确定必须有一种方法可以连接此信息并创建上述第三个表Z。
我还想知道如何一次更新几个值?考虑一下,我不需要桥接表,只想简单地在表X和Y之间创建关系。如何将表X中的银行的值(银行名称)更新为我在表Y中创建的Bank_ID?如果您只有2个ID,但有多个ID,更新查询就很容易做到这一点。
我想通过告诉您我不精通编码(包括SQL和VBA)来完成这篇漫长的“论文”,所以同时使用这两种方法的解决方案对我来说可能比较棘手。
希望您能帮助我!预先感谢!
答案 0 :(得分:0)
听起来好像您在三个表之间的连接没有正确。听起来您好像正确地将excel中的5列标准化为桥接表。最终,您将获得以下内容(sqlserver语法):
create table Company(CompanyID int, CompanyName varchar(100));
create table Bank(BankID int, BankName varchar(100));
create table Account(AccountID int, CompanyID int, BankID int, AccountNumber varchar(20));
select CompanyID, CompanyName, BankID, BankName, AccountNumber
from Company
join Account on Account.CompanyID=Company.CompanyID
join Bank on Bank.BankID=Account.BankID
我省略了外键,但我想您可以看到它们的位置。