2009-07-22 2 views
0

두 테이블의 값을 저장하는 테이블을 만들고 싶습니다. 표 1에서두 테이블의 필드가있는 테이블 만들기

: CUST_ID (VARCHAR2), invoice_amt (플로트) 표 2에서

: (표 1) CUST_ID, PAYMENT_DATE는

내 표는 3 개 필드가 있어야합니다

cust_id, invoice_amt, payment_date 

나는 분명히 틀린 다음을 시도했다.

create table temp1 as (
    select table_1.cust_id, table_1.invoice_amt, table_2.payment_date 
     from [email protected], [email protected]) 

귀중한 도움이 될 것입니다.

+0

전문가 여러분, 의견을 보내 주셔서 감사합니다. 나는 테이블 생성을 진행할 수 있지만, 제 문제는 테이블에 7 백만 개가 넘는 레코드와 dblink 이상의 레코드 액세스를 시도하는 것입니다. 어쨌든 질의를 빠르게 할 수 있습니까? 나는 완전한 초심자이기 때문에 좀 더 상세한 도움이 될 것입니다. 많은 감사합니다 :) – novice

답변

4
create table temp1 as (
    select 
     table_1.cust_id, 
     table_1.invoice_amt, 
     table_2.payment_date 
    from 
     [email protected], 
     [email protected] 
    where 
     table_1.cust_id = table_2.cust_id 
    ) 

나는 오라클 사람이 아니지만 원하는대로해야합니다 (테스트되지는 않았지만).

1

그것은 당신이 그것을 사용하려고하는지에 따라 달라집니다,하지만 난 몹시 대신 테이블의 뷰 사용하도록 유혹 할 것 :

create view temp1(cust_id, invoice_amt, payment_date) as 
    select t1.cust_id, t1.invoice_amt, t2.payment_date 
     from [email protected] as t1 inner join [email protected] as t2 
      on t1.cust_id = t2.cust_id 

장점은 항상 현재 버전의 table_1 및 table_2의 값을 포함한다는 것입니다. 단점은 뷰를 편집 할 수 없다는 것입니다 (또는 가능한 경우 편집이 뷰뿐만 아니라 기본 테이블에도 영향을 미침).

+0

단점은 그보기에 대한 모든 쿼리에 대해 DB 링크를 통해 데이터를 가져와야한다는 것입니다. – jva

관련 문제