我正在尝试迁移一些遗留程序代码。我无法找出 ANSI 标准语法来产生相同的结果。
以下是我尝试过的众多组合之一。第二个连接的内表是什么,是第一个连接的输出还是源表。
请帮助我有很多代码要更改。
原始 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")