Для выбора данных из двух таблиц без использования метода
JOIN можно использовать подзапросы. Подзапросы позволяют выполнять вложенные запросы, где результат одного запроса используется в другом запросе.🟠Использование подзапросов в `SELECT`
Вы можете использовать подзапрос в операторе
SELECT, чтобы извлечь данные из одной таблицы, используя значения из другой таблицы.SELECT
o.order_id,
o.order_date,
(SELECT c.customer_name FROM customers c WHERE c.customer_id = o.customer_id) AS customer_name
FROM
orders o;
🟠Использование подзапросов в `WHERE`
Вы можете использовать подзапрос в операторе
WHERE, чтобы фильтровать данные на основе условий из другой таблицы.SELECT
o.order_id,
o.order_date
FROM
orders o
WHERE
o.customer_id IN (SELECT c.customer_id FROM customers c WHERE c.city = 'New York');
🟠Использование подзапросов в `FROM`
Вы можете использовать подзапрос в операторе
FROM, чтобы создать временную таблицу и затем выбрать данные из нее.SELECT
c.customer_name,
latest_orders.order_id,
latest_orders.order_date
FROM
customers c,
(SELECT
o.customer_id,
o.order_id,
o.order_date
FROM
orders o
WHERE
o.order_date = (SELECT MAX(order_date) FROM orders o2 WHERE o2.customer_id = o.customer_id)
) AS latest_orders
WHERE
c.customer_id = latest_orders.customer_id;
🟠Использование подзапросов с агрегатными функциями
Подзапросы могут быть полезны при использовании агрегатных функций для получения обобщенной информации из одной таблицы, связанной с другой таблицей.
SELECT
c.customer_name,
(SELECT COUNT(*) FROM orders o WHERE o.customer_id = c.customer_id) AS total_orders
FROM
customers c;
🟠Использование подзапросов с операторами EXISTS
Оператор
EXISTS проверяет наличие строк в подзапросе и возвращает TRUE, если подзапрос возвращает хотя бы одну строку.SELECT
c.customer_name
FROM
customers c
WHERE
EXISTS (SELECT 1 FROM orders o WHERE o.customer_id = c.customer_id);
Ставь 👍 и забирай 📚 Базу знаний