从一个表中插入三个表

时间:2010-05-26 08:18:17

标签: c# mysql

我目前有一个设计糟糕的Access数据库,我正在使用MySQL构建一个新的数据库。在这个Access数据库中,我有一个表,而在MySQL中我有三个表来管理相同的数据。

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

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

我正在做一个小型的C#程序来做这件事。

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

1 个答案:

答案 0 :(得分: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