いくつかのレガシー手続き型コードを移行しようとしています。同じ結果を生成するための ANSI 標準構文を理解するのに苦労しています。
以下は、私が試した多くの組み合わせの1つです。2 番目の結合の内部テーブルは何ですか。それは最初の結合からの出力ですか、それともソース テーブルですか。
変更するコードがたくさんあるので、助けてください。
元の SQL ステートメント
select * from
JT1 a, JT2 b, JT3 c
where a.ID *= b.ID
and c.JOB *= b.JOB
私の回心
select *
from JT1 a
left outer join JT2 b
on a.ID = b.ID
right outer join JT3 c
on c.JOB = b.JOB
以下は、SQL テーブルの定義とサンプル データです。
Create table JT1 (
ID int(4) not null,
NAME char(20) not null)
Create table JT2 (
ID int(4) not null,
JOB char(20) not null)
Create table JT3 (
JOB char(20) not null,
DUTY char(20) not null)
INSERT INTO dbo.JT1 VALUES(10, "Saunders")
INSERT INTO dbo.JT1 VALUES(20, "Pernal")
INSERT INTO dbo.JT1 VALUES(30, "Marenghi")
INSERT INTO dbo.JT2 VALUES(20, "Sales")
INSERT INTO dbo.JT2 VALUES(30, "Clerk")
INSERT INTO dbo.JT2 VALUES(30, "Mgr")
INSERT INTO dbo.JT2 VALUES(40, "Sales")
INSERT INTO dbo.JT2 VALUES(50, "Mgr")
INSERT INTO dbo.JT3 VALUES("Mgr","Evaluate")
INSERT INTO dbo.JT3 VALUES("Mgr","Reports")
INSERT INTO dbo.JT3 VALUES("Mgr","Meeting")
INSERT INTO dbo.JT3 VALUES("Clerk","Stocking")
INSERT INTO dbo.JT3 VALUES("Clerk","Customer Request")