Можете ли вы создать внешнее объединение с помощью встроенного SQL - PullRequest
0 голосов
/ 26 сентября 2019

Мне нужно создать внешнее объединение, используя встроенный sql.Я не могу понять это.

select el.emp_number,el.first_name,el.last_name,e.job_desc_abbr as item_description,
el.level_one,el.level_one_firstname,el.level_one_lastname,
el.level_two,
el.level_two_firstname,el.level_two_lastname,
el.level_three,el.level_three_firstname,el.level_three_lastname
 from emp_level el,emp_information_test e
 right join (select empid,job_desc_abbr from emp_information_test) level1 on level1.empid = el.level_one   <--- Error
  where el.emp_number = e.empid
  and  e.deptno <> '999'
  and e.empid in ('547787','253010')

Сообщение 4104, уровень 16, состояние 1, строка 7
Не удалось связать идентификатор из нескольких частей "el.level_one".

Я не уверен, возможно ли это.Мне нужна помощь с синтаксисом.Спасибо

1 Ответ

0 голосов
/ 26 сентября 2019

Как я уже писал в своем комментарии, ваша проблема - это сочетание неявных и явных объединений.
Поскольку явные объединения были частью ANSI-SQL уже почти 30 лет, на самом деле нет необходимости использовать неявные объединениябольше, никогда.

Вот какая должна быть рабочая версия вашего оператора выбора:

SELECT   el.emp_number
        ,el.first_name
        ,el.last_name
        ,e.job_desc_abbr AS item_description
        ,el.level_one
        ,el.level_one_firstname
        ,el.level_one_lastname
        ,el.level_two
        ,el.level_two_firstname
        ,el.level_two_lastname
        ,el.level_three
        ,el.level_three_firstname
        ,el.level_three_lastname
FROM emp_level AS el
JOIN emp_information_test AS e
    ON el.emp_number = e.empid
RIGHT JOIN (
    SELECT   empid
            ,job_desc_abbr 
    FROM emp_information_test
) AS level1 
     ON level1.empid = el.level_one   
WHERE e.deptno <> '999'
AND e.empid IN ('547787','253010')
...