Подзапрос для поиска сотрудников с той же работой, что и у сотрудника с именем, начинающимся на J?

#mysql #mysql-workbench

#mysql #mysql-верстак

Вопрос:

Мне нужно создать запрос, в котором перечислены фамилия, edlevel-в , место работы, количество лет, они работали по состоянию на январь 01/2002 ( подсказка : функция января года 01/2002 минус дата приема на работу), и их зарплата.
Вам сотрудников, которые имеют ту же работу, что сотрудник по фамилии начинается с J (намек подзапрос от работника) и hiredate lt; Января 01/2002 отсортировать список на высокую зарплату в первую очередь.

Мой запрос работает иначе, чем получение сотрудников, у которых та же работа, что и у сотрудника с именем, начинается с J

 SELECT * FROM EMPLOYEE;  

Образец результатов от SELECT * ОТ СОТРУДНИКА

 SELECT * FROM EMPLOYEE WHERE FIRSTNME LIKE "J%";  

Все результаты от SELECT * ОТ СОТРУДНИКА, ГДЕ МНЕ СНАЧАЛА НРАВИТСЯ «J%»

Это мой вопрос до сих пор

 SELECT EMP.FIRSTNME,EMP.LASTNAME, EMP.EDLEVEL, EMP.JOB,   FLOOR(DATEDIFF("2002-01-01",EMP.HIREDATE) / 365) AS YearsWorked,   EMP.SALARY   FROM EMPLOYEE EMP  WHERE EMP.HIREDATE lt; "2002-01-01"   AND (SELECT EMP2.JOB FROM EMPLOYEE EMP2 WHERE EMP2.FIRSTNME LIKE'J%')   ORDER BY EMP.SALARY DESC;  

Этот запрос не возвращает результатов, если я удаляю вложенный запрос, он возвращает из вложенного запроса результаты, необходимые помимо того, что мне нужно.

Ответ №1:

просто небольшое исправление поможет

 SELECT EMP.FIRSTNME, EMP.LASTNAME, EMP.EDLEVEL, EMP.JOB,  FLOOR(DATEDIFF("2002-01-01",EMP.HIREDATE) / 365) AS YearsWorked,  EMP.SALARY  FROM EMPLOYEE EMP WHERE EMP.HIREDATE lt; "2002-01-01"  AND EMP.JOB in (SELECT EMP2.JOB FROM EMPLOYEE EMP2 WHERE EMP2.FIRSTNME LIKE'J%')  ORDER BY EMP.SALARY DESC;  

вы должны использовать ‘EMP.JOB в’ в том месте, где перед вашим подзапросом