#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 в’ в том месте, где перед вашим подзапросом