Подзапросы

Что такое подзапросы: определение, основные принципы, примеры и практические советы. Изучайте SQL для тестировщиков с подробными объяснениями для начинающих специалистов.

Подзапросы.

Подзапрос — это запрос, использующийся в другом SQL запросе. Подзапрос всегда заключён в круглые скобки и обычно выполняется перед основным запросом.

SELECT * FROM Reservations
WHERE Reservations.room_id = (
    SELECT id FROM Rooms ORDER BY price DESC LIMIT 1
);

Практические примеры:

-- Подзапрос в WHERE - пользователи с заказами выше среднего
SELECT username FROM users
WHERE id IN (
    SELECT user_id FROM orders
    WHERE total_amount > (SELECT AVG(total_amount) FROM orders)
);

-- Подзапрос в SELECT - количество заказов для каждого пользователя
SELECT username,
       (SELECT COUNT(*) FROM orders WHERE user_id = users.id) as order_count
FROM users;

-- Подзапрос в FROM - средняя цена по категориям
SELECT category_stats.category, category_stats.avg_price
FROM (
    SELECT category, AVG(price) as avg_price
    FROM products
    GROUP BY category
) as category_stats
WHERE category_stats.avg_price > 100;

-- EXISTS - пользователи с заказами
SELECT username FROM users u
WHERE EXISTS (
    SELECT 1 FROM orders o WHERE o.user_id = u.id
);

-- NOT EXISTS - пользователи без заказов
SELECT username FROM users u
WHERE NOT EXISTS (
    SELECT 1 FROM orders o WHERE o.user_id = u.id
);