#mysql #sql
Вопрос:
Я пытаюсь изучить общие табличные выражения и не понимаю, почему я получаю эту ошибку.
Я хочу получить имя сотрудника и название его проекта для всех сотрудников, чья зарплата превышает половину максимальной зарплаты.
Вот эти таблицы:
И это код, который я использую
with cte1 as (
select max(salary) as ms from employees
)
select e.first_name, p.title
from employees e
join employees_projects ep on ep.employee_id = e.id
join projects p on p.id = ep.project_id
where e.salary > (cte1.ms) / 2
То, что я пытаюсь сделать, — это изучить CTE, поэтому мне нужно знать, что не так с тем, что я делаю с CTE, почему я получаю ошибку?
Ошибка в том, что
ОШИБКА 1054 (42S22) в строке 21: Неизвестный столбец «cte1.m» в предложении «где»
Спасибо!
Комментарии:
1. Вы не ссылаетесь на CTE в своем заявлении select. Вы, вероятно, захотите присоединиться к нему…
2. CTE является избыточным в данном конкретном случае — используйте подзапрос в WHERE.