Я пытаюсь перенести некоторые устаревшие процедурные коды. У меня возникли проблемы с выяснением стандартного синтаксиса 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")