2011-11-18 3 views
0

일대 다 관계에서 하나의 테이블에서 많은 테이블로 필드를 이동하려면 어떻게해야합니까?하나의 테이블에서 SQL의 여러 테이블로 필드를 이동하는 방법은 무엇입니까?

우리 시스템에는 전체 주문 (하나의 '주문'에는 많은 'OrderLineItems'이 있음)에 대한 주소를 저장하는 필드가 있습니다. 이제 각 'OrderLineItem'에 주소를 저장하도록 허용해야합니다. 이 시점까지의 모든 주문에 대해 모든 것이 하나의 주소 아래에 있으므로 내 생각에 각 OrderLineItem의 주소를 해당 주문의 주소로 설정하는 것이 었습니다.

  • 우리는
  • 주소의 MySQL 5.5.17을 사용하고 내가 SQL 서버를 가정하고 당신이 당신의 RDBMS 맛으로 조정할 수, 외국 키 당신이 당신의 RDBMS를 언급하지 않았으므로
+0

한 테이블에서 필드를 제거하고 다른 필드에 필드를 추가하는 것만으로는 어떤 문제가 있습니까? –

+0

콘텐츠를 동시에 이동해야합니다. – benstpierre

+0

좋습니다. 따라서 새 필드를 만들고 내용을 이동하고 새 필드를 사용하도록 코드를 변경하며 결국 이전 필드를 삭제하는 스크립트를 작성하고 실행하십시오. 이것은 꽤 솔직한 접근법입니다. –

답변

1

질문에 그다지 자세히 설명되어 있지 않습니다. 어떤 SQL Server를 사용하고 있습니까? 주소 열이 외래 키입니까? 어떤 데이터 유형입니까?

각 주소 열에 대해 address_col_name을 실제 열 이름으로 바꾸고 제약 조건을 지정하여 SQL Server에서이 작업을 수행하십시오. 한 번에 문 하나를 실행합니다

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

아니다 :

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; 
관련 문제