2009-04-29 3 views
0

제 오라클 프로젝트에 대한 답을 나에게 알려주시겠습니까?기존 테이블의 새 열을 복사하고 Oracle의 다른 테이블에서 열 정보를 복사하는 방법이 있습니까?

나는 두 개의 서로 다른 테이블, 청구서 및 고객을 가지고 있습니다. 송장 테이블에는 날짜라는 열이 이미 있고 고객 테이블에는 날짜 열이없고 이미 만들었습니다. 송장 테이블에서 날짜 데이터를 가져 오는 방법을 모르겠습니다. 누구든지 나를 위해이 질문에 대답 할 수 있습니까?

답변

1

"날짜"와 같은 키워드를 사용하여 열 또는 표 이름이 문제가 있다고 생각합니다. 그것은 "creation_date"또는 "invoice_date"여야합니다 - 더 서술적이고 키워드가 아닙니다.

맞으면 고객 표의 "date"는 "birth_date"또는 "signup_date"또는 고객에게 의미있는 것이어야하며 "invoice_date"사본이 아닙니다. DRY 원칙 및 정규화 규칙에 따라 데이터를 반복해서는 안됩니다.

1

당신이 원하는 것을 완전히 명확하지 않다, 그러나 추가하고 테이블에 열을 채우는 것은 쉬운 충분하다 :

1) 새 열을 추가 :

alter table customer add (some_date date); 

(duffymo 말한 것처럼 Oracle 테이블에서 "날짜"라는 열을 가질 수 없으며 적어도 그렇게해서는 안됩니다. 다른 테이블의 데이터에서 열을 채우기

2) : 나는 고객이 하나 이상의 송장이있을 수 있습니다 생각 때문에

update customer c 
set some_date = (select max(other_date) from invoices i 
       where i.customer_id = c.customer_id 
       ); 

나는 최대()를 사용했다. 물론 요구 사항은 다를 수 있지만 중요한 점은 하위 쿼리는 각 고객에 대해 어떻게 든 1 행만 반환해야한다는 것입니다.

관련 문제