Вставка в базу данных MySQL с отношением «многие ко многим» с использованием C # - PullRequest
0 голосов
/ 06 сентября 2011

Я создал следующие таблицы для заполнения моих данных, используя 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', 'me@myhouse.com'
), (
    'B scientists', 'Head Office', '123 Fake St', '0121 38473847', '0121 3746382', 'http://www.google.com', 'me@myhouse.com'
);

В данный момент я заполняю таблицу по науке каждой доступной областью науки, и теперь я хочу добавить ученых к моей таблице. Каждый ученый охватывает несколько различных областей науки, и я хотел бы вставить все это в свою базу данных.

Любая помощь будет высоко ценится.

1 Ответ

0 голосов
/ 06 сентября 2011

Вам просто нужно найти идентификаторы ученых и областей и вставить их в таблицу.Может быть, такой код поможет вам, предполагая, что нет ни ученого с дублированными именами, ни областей:

INSERT INTO scientistArea (scientistID, areaOfscienceID)
SELECT scientistID, areaOfscienceID
FROM   scientists,
       areaOfscience
WHERE  scientists.scientistName = 'A scientists' AND
       areaOfscience.areaName = 'Agricultural science'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...