2011-09-06 51 views
0

我創建了下列表格來使用C#和MySQL填充我的數據。使用C#以多對多的關係插入到MySQL數據庫中

SCIENTIST 
----------------------- 
scientistID 
scientistName 
branch 
address 
phone 
fax 
url 
email 

SCIENTISTAREA 
------------------------ 
scientistAreaID 
scientistID 
areaofscienceID 

AREAOFSCIENCE 
-------------------- 
areaofscienceID 
areaName 

我有一個包含科學的表內的所有信息,包括含科學家涵蓋科學的各個領域的字符串列表的科學家類。爲了使添加查詢變得更容易,我創建了一個包含每個獨特科學領域的字符串列表。我寫了這些基本查詢,當我寫我自己的。正如你看到的,我前綴我遇到問題的領域,以@(主要是我將使用MySqlParameterCollection.AddWithValue()來添加的話):

insert into areaOfscience (
    areaName 
) values (
    'Agricultural science' 
); 

insert into scientistArea (
    scientistID, areaOfscienceID 
) values (
    @scientistID, @areaOfscienceID 
); 

insert into scientists (
    scientistName, branch, address, phone, fax, url, email 
) values (
    'A scientists', 'Head Office', '123 Fake St', '0117 38473847', '0117 3746382', 'http://www.google.com', '[email protected]' 
), (
    'B scientists', 'Head Office', '123 Fake St', '0121 38473847', '0121 3746382', 'http://www.google.com', '[email protected]' 
); 

目前,我正在用科學的每一個可用領域來填補科學領域,現在我正在尋找科學家加入我的桌子。每位科學家都涵蓋了許多不同的科學領域,我想將所有這些插入到我的數據庫中。

任何幫助將不勝感激。

回答

0

你只需要尋找一個科學家和地區的ID並將它們插入到科學家區域表中。也許這樣的代碼可以幫助你,假設沒有重複名稱的科學家,也沒有區域:

INSERT INTO scientistArea (scientistID, areaOfscienceID) 
SELECT scientistID, areaOfscienceID 
FROM scientists, 
     areaOfscience 
WHERE scientists.scientistName = 'A scientists' AND 
     areaOfscience.areaName = 'Agricultural science' 
+0

嗯,現在我很困惑;你正在尋找C#或SQL代碼? –

+0

我使用C#和MySQL(使用MySql.Data.dll)。到目前爲止,我在我的C#代碼中有兩個foreach循環,它們已經運行查詢來添加所有科學家和所有科學領域。我遇到的問題是,一旦科學家和地區科學家從他們的C#列表中填充,如何運行上述查詢。 – AlexT