Problem> 다음과 같은 정규화 된 표가 주어졌다고 가정하자.
여기서 '편명, 인수' 그리고 '편명, 기종, 도착시간' 의 표를 작성하는 커멘드를 보여라.
Solve>
先ず、結果を入力するための「Assigntable1」と「Assigntable2」を生成しました。
Step1> 生成されたそれぞれのTABLEのFILEDはこの通りです。
「 Assigntable1 」int id, varchar name, varchar origin, varchar dest, varchar plane
「 Assigntable2 」int id, varchar name, varchar plane, int due
Step2> 既存にあったTable1とTable2から、NUMBER Filedを基準にして、TableのJoinをいきました。
その後、Joinした結果を Assigntable1に入れました。
Step3> Assigntable1とTable2をそれぞれの出発地と到着地を基準でJoinをいきました。
その後、Joinした結果を Assigntable2に入れました。
Step4> Step2とStep3で書いたSQLの命令文を合わせて、適用しました。
Table join을 위해서 임시적으로 결과를 담을 수 있는 테이블을 만드는 것이 가장 필요하다.
'편명, 기종, 도착시간' 을 복수의 표에서 불러와서 join 하는 예를 기준으로 설명하면,
Step1> 먼저, 결과를 입력하기 위한 Assigntable1과 Assigntable2를 생성한다.
생성된 각각의 테이블의 필드는 다음과 같다.
「 Assigntable1 」int id, varchar name, varchar origin, varchar dest, varchar plane
「 Assigntable2 」int id, varchar name, varchar plane, int due
Step2> 기존에 있는 Table1과 Table2로부터, Number Filed를 기준으로 Table Join을 실행한다.
그 후, Join 한 결과를 Assigntable1에 insert 시킨다.
Step3> Assigntable1과 Table2 각각의 출발지와 도착시간을 기준으로 Table Join을 실행한다.
그 후, Join 한 결과를 Assigntable2에 insert 시킨다.
Step4> Step2와 Step3에서 작성된 SQL 명령어를 합쳐서 적용시킨다.
작성과정과 결과의 화면은 다음과 같다.
(왼쪽 상단부터 오른쪽으로 Step1, Step2, Step3, Step4의 결과화면)
작성된 SQL 파일의 내용은 다음과 같다.
insert into assigntable1
select
table1.id,table1.name, table1.origin,table1.dest,table3.plane
from
table1, table3
where
table1.number = table3.number;
insert into assigntable2
select
assigntable1.id,assigntable1.name,assigntable1.plane,table2.due
from
assigntable1,table2
where
assigntable1.origin=table2.origin
and
assigntable1.dest=table2.dest;
문제 1의 (편명, 인수) 를 기준으로 Join 하기 위해서 작성된 SQL 파일의 내용은 다음과 같다.
insert into ex1
select table1.id,table1.name,
table1.number,
table3.plane,
table3.type
from table1,table3
where table1.number=table3.number;
insert into ex2
select ex1.id, ex1.name,table4.people
from ex1,table4
where ex1.plane=table4.plane
and
ex1.type=table4.type;
select * from ex2;
댓글
댓글 쓰기