Отсутствует ключевое слово в синтаксисе JOIN

Я искал сайт, прежде чем задать вопрос, но не сталкивался с чем-то связанным. Я уверен, что это смехотворно основная ошибка, я изучал Oracle SQL только с компьютера на протяжении 4 месяцев. Я планирую взять 1z0-051 в конце этого месяца, так что пройдусь по всем главам. В этом пункте я пытаюсь получить имя, должность, зарплату, отдел и город сотрудников, у которых зарплата выше, чем средняя зарплата на самой низкооплачиваемой должности (CLERK). Я продолжаю получать недостающее ключевое слово, хотя?

SELECT e.first_name,
  e.last_name,
  j.job_title,
  e.salary,
  d.department_name,
  l.city
FROM employees e
JOIN jobs j
WHERE salary >
  (SELECT AVG(salary) FROM employees WHERE job_id LIKE '%CLERK%'
  ) ON e.job_id = j.job_id
JOIN departments d
ON e.department_id = d.department_id
JOIN locations l
ON d.location_id = l.location_id
ORDER BY salary

3 ответа

Решение

У тебя есть JOIN-WHERE-ON последовательность, которая неверна.

Должно быть что-то вроде этого (при условии WHERE не является частью вашего условия присоединения):

FROM employees e
JOIN jobs j ON e.job_id = j.job_id
....
....
WHERE e.salary >
  (SELECT AVG(salary) FROM employees WHERE job_id LIKE '%CLERK%')
ORDER BY ...

ОТ сотрудников e ПРИСОЕДИНЯЙТЕСЬ к рабочим местам j << Вы пропускаете предложение "ON" между сотрудниками и рабочими местами здесь >> ГДЕ зарплата

Кроме того, переместите предложение WHERE после всех соединений.

select
      fields
   from
      table
         join
            join "ON" clause
         join
            join "ON" clause
   where
      some condition
   group by
      whatever grouping if aggregates
   order by
      if you want something certain order.

Вы не можете иметь join пункт после where пункт

Другие вопросы по тегам