Занятие 27. Практикум 7
⚡ Кратко: примеры
- Сотрудники без привилегий — три способа.
- Заказы в Las Vegas от выбранных сотрудников.
- Клиенты из компаний A–F и перевозчик №3.
💻 Рабочие примеры
Пример 1. Сотрудники без привилегий — LEFT JOIN
USE northwind;
SELECT e.first_name, e.last_name
FROM employees AS e
LEFT JOIN employee_privileges AS ep ON e.id = ep.employee_id
WHERE ep.employee_id IS NULL;
LEFT JOIN сохраняет всех сотрудников; фильтр IS NULL оставляет только тех, у кого нет записи в employee_privileges.
Пример 2. Сотрудники без привилегий — подзапрос
USE northwind;
SELECT first_name, last_name
FROM employees
WHERE id NOT IN (
SELECT employee_id FROM employee_privileges
);
Пример 3. Сотрудники без привилегий — CTE
USE northwind;
WITH privileged AS (
SELECT employee_id FROM employee_privileges
)
SELECT first_name, last_name
FROM employees
WHERE id NOT IN (SELECT employee_id FROM privileged);
Пример 4. Заказы в Las Vegas от выбранных сотрудников — подзапрос
USE northwind;
SELECT *
FROM orders
WHERE ship_city = 'Las Vegas'
AND employee_id IN (
SELECT id
FROM employees
WHERE first_name LIKE '%e%'
OR job_title = 'Sales Representative'
);
Пример 5. Заказы в Las Vegas от выбранных сотрудников — CTE
USE northwind;
WITH selected_employees AS (
SELECT id
FROM employees
WHERE first_name LIKE '%e%'
OR job_title = 'Sales Representative'
)
SELECT *
FROM orders
WHERE ship_city = 'Las Vegas'
AND employee_id IN (SELECT id FROM selected_employees);