2013-10-06 6 views
2

Я использую SQL-Server 2008.Как передать данные из одной таблицы в другую 2 таблицы

У меня есть 3 таблицы:

Item 
    - Id 
    - Name 

ItemLink 
    - Id 
    - FkParentItemId 
    - FkChildItemId 

Item2 
    - Id 
    - FkItemId 
    - Name 

Отношения:

ItemLink >- Item -< item2 
     >- 

я теперь что я совершил ошибку и мне нужно перенести данные из «Item2» в «Item», но создайте иерархию, вставив запись ItemLink. Я не хочу начинать дискуссию о плюсах и минусах этого подхода, но просто добавлю, что есть общие таблицы с «Item», которые мне нужны для «Item2»

Так что мне нужны голова на вставке ddl требуется для этого, пожалуйста. Я полагаю, что это будет что-то вроде:

Insert into Item(Name) select(Item2.Name) from Item2 
Insert into ItemLink(FkParentItemId,FkChildItemId) select (Item2.FkItemId, New ItemId ??) 

Бит ржавый на этом, отсюда и помощь.

Большое спасибо заранее.

+0

вы пытаетесь запустить код, который вы должны думать, работать ли? – Michael

+0

Является ли пункт таблицы FkChildItemId? Это мне непонятно. – Michael

+0

Нет, это всего лишь псевдокод. Моя лучшая идея - вставить в Item, а затем запустить вставку с Item на ItemLink. Однако я уверен, что существует более красноречивый подход T-SQL. Спасибо за ответ – SamJolly

ответ

1

Хорошо, поэтому я делаю некоторые предположения здесь.

Предполагаю, что значения в таблице Item2 останутся.

insert into item (name) 
select Name from item2 

Эта средняя часть не ясна для меня. Как-то вам нужно будет обновить таблицу Fk to Item.

update item2 
set FkItemId = id 
from item2 inner join item 
on item.name = item2.name 

заселить ItemLink

insert into ItemLink (PkParent, PkChild) 
select item.id, item2.id 
from item2 inner join item 
on item.id = item2.FkItemId 
+0

Хорошо, спасибо. Очень ценится за головы. – SamJolly

Смежные вопросы