2010-05-26 109 views
0

我目前有一个设计不好的Access数据库,我正在用MySQL建立一个新的数据库。在这个Access数据库中,我有一个表,而在MySQL中,我有三个表来管理相同的数据。从一张表中插入三张表

ERR模型很简单。这是“公司”和“类别”表之间的n/m关系。由于它是一个n:m我有另一个名为“CompanyCategory”的表。

我所做的是从访问中读取数据并将INSERT插入到新的数据库中。

我正在做一个小的C#程序来做到这一点。

因此,我从Access获取公司数据,并将数据插入到新的公司表中。我得到类别名称,并将其插入到类别表中。为避免重复到此表中,我在类别名称上有一个UNIQUE INDEX。问题是当我在CompanyCategory表中插入ID时,因为插入到类别表中的INSERT通常返回-1(LastInsertedId方法)。谁能帮我?谢谢。

+0

'问题是,当我插入的CompanyCategory表的ID,因为INSERT到类别表通常返回-1'。我无法理解你的问题,但是。 – Amsakanna 2010-05-26 08:50:15

回答

0

好,据我所知,您的数据看起来是这样的:

[olddata] 
companyid title categorytitle 
1   Acme Teapots 
2   Cmea Furniture 
3   Meac Cars 
4   Eacm Furniture 

而且你想导出,只有分类“家具”添加到您的新类别表一次。下面是新表:

company (companyid,title) 
category (categoryid,title) 
companycategory (categoryid,companyid) 

,这应运从“oldtable”数据导入theese新表:

INSERT INTO company (companyid,title) SELECT companyid,title FROM olddata 

INSERT INTO category (title) SELECT DISTINCT categorytitle FROM olddata 

INSERT INTO companycategory (companyid,categoryid) SELECT a.companyid,(SELECT b.categoryid FROM category b WHERE b.title=a.categorytitle) FROM olddata a