SQL for junior
29 subscribers
3 photos
SQL для начинающих. Здесь ты найдешь уроки, советы, практические примеры и ответы на вопросы, чтобы стать SQL-профи с нуля.
Download Telegram
#SQLAntiPattern: Бесконечные вложенные подзапросы

Многие новички пишут код с множеством уровней вложенности:
-- Сложный для понимания запрос
SELECT *
FROM (
SELECT *
FROM (
SELECT *
FROM products
WHERE category_id IN (
SELECT id
FROM categories
WHERE active = true
)
) AS active_products
WHERE price > 100
) AS expensive_products
WHERE stock_quantity > 0;


Лучшее решение - использовать CTE (Common Table Expressions)
WITH active_categories AS (
SELECT id
FROM categories
WHERE active = true
),
active_products AS (
SELECT *
FROM products
WHERE category_id IN (SELECT id FROM active_categories)
),
expensive_products AS (
SELECT *
FROM active_products
WHERE price > 100
)
SELECT *
FROM expensive_products
WHERE stock_quantity > 0;


💡 CTE делают код намного читабельнее и легче для сопровождения!

#CleanCode #SQLRefactoring
1💘1