MySQL Subquery Exercises: найдите имена сотрудников, которые имеют менеджера и работали в отделе в США
MySQL Subquery: Упражнение-3 с решением
Напишите запрос, чтобы найти имя (имя, фамилия) сотрудников, которые имеют менеджера и работали в отделе в США.
Пример таблицы: сотрудники
Пример таблицы: отделы
Пример таблицы: расположение
Код:
SELECT first_name, last_name FROM employees
WHERE manager_id in (select employee_id
FROM employees WHERE department_id
IN (SELECT department_id FROM departments WHERE location_id
IN (select location_id from locations where country_id='US')));
Объяснение:
Синтаксис MySQL подзапроса :
операнд сравнения_оператор операнд IN (подзапрос) операнд сравнения_оператор НЕКОТОРЫЙ (подзапрос)
Где сравнение_оператор является одним из этих операторов
= > < >= <= <> !=
и оператор IN проверяет, находится ли значение в наборе значений.
Например :
mysql> SELECT 2 IN (0,3,5,7);
-> 0
mysql> SELECT 'wefwf' IN ('wee','wefwf','weg');
-> 1
При использовании с подзапросом слово IN является псевдонимом для = ANY. Таким образом, эти два утверждения одинаковы:
SELECT s1 FROM t1 WHERE s1 = ANY (SELECT s1 FROM t2);
SELECT s1 FROM t1 WHERE s1 IN (SELECT s1 FROM t2);
IN и = ANY не являются синонимами при использовании со списком выражений. IN может принимать список выражений, но = ANY не может.
Редактор кода MySQL:
Структура базы данных «hr»:
Есть другой способ решить это решение? Внесите свой код (и комментарии) через Disqus.
Предыдущий: Напишите запрос, чтобы найти имя (имя, фамилия) всех сотрудников, которые работают в ИТ-отделе.
Далее: напишите запрос, чтобы найти имя (имя, фамилия) сотрудников, которые являются менеджерами.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования