Как я могу переместить поле из одной таблицы в таблицу многих в SQL? - PullRequest
0 голосов
/ 18 ноября 2011

Как я могу переместить поле из одной таблицы в таблицу многих в отношении один ко многим?

В нашей системе у нас есть поле, в котором хранится адрес для всего заказа (один«Order» имеет много «OrderLineItems»).Теперь нам нужно разрешить каждому OrderLineItem в заказе хранить адрес.Для всех заказов до этого момента все было под одним адресом, поэтому моя идея состояла в том, чтобы просто установить адрес каждого OrderLineItem в адрес его заказа.

  • Мы используем MySQL 5.5.17
  • Адрес не является внешним ключом

Ответы [ 2 ]

1 голос
/ 18 ноября 2011

Не так много деталей в вопросе. Какой сервер sql вы используете? Является ли адресная колонка внешним ключом? Какой это тип данных?

Сделайте это в SQL Server для каждого столбца адреса, заменив address_col_name на фактическое имя столбца и указав все ограничения. Выполняйте операторы по одному:

alter table OrderLineItem 
add address_col_name address_col_type; 
GO

update OrderLineItem set address_col_name = o.address_col_name 
from OrderLineItem as oli 
join Order as o on oli.OrderID = o.OrderID; 
GO

alter table Order 
drop column address_col_name; 
GO

Может быть много других соображений, но это основной код.

0 голосов
/ 18 ноября 2011

Поскольку вы не указали свою RDBMS, я буду использовать SQL Server, и вы можете настроить его под свой RDBMS:

alter table OrderLineItems Add Address varchar(100);

update i
set i.Address = o.Address
from OrderLineItems i
inner join Order o on o.OrderID = i.OrderID;

alter table Order Drop Column Address;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...