💻
Ошибки при использовании джоиновДавайте обсудим некоторые ключевые аспекты работы с джоинами в SQL, на которые стоит обратить внимание, чтобы избежать ошибок и недоразумений.
🔑
Сохранение данных в приоритете
При написании запросов с джоинами, особенно с транзитивными связями, всегда задавайте себе вопрос:
❓ Какие данные мне важно не потерять?
Выбор правильного типа джоина имеет огромное значение, потому что неверный выбор может привести к некорректным результатам. Часто бывает так:
1️⃣ Вы выбираете джоин, который кажется логичным;
2️⃣ Вы не замечаете потенциальных проблем.
Давайте рассмотрим этот момент на примере:
SELECT *
FROM problem p
JOIN page p2
ON p.page_id = p2.id
JOIN company c
ON p.company_id = c.id
На первый взгляд, этот запрос кажется корректным, и результаты выглядят нормально. Однако если внимательно проанализировать, вы увидите, что множество записей из таблицы
problem просто исчезли 😱
❓
Почему так произошло?
Что, если в таблице problem есть строки, в которых company_id = NULL? Тогда такие строки будут исключены из результата, ведь в таблице company поле id — первичный ключ и не содержит NULL.
❗️ Чтобы избежать потери данных, всегда помните о выборе правильного типа джоина:
SELECT *
FROM problem p
JOIN page p2
ON p.page_id = p2.id
LEFT JOIN company c
ON p.company_id = c.id
Используя LEFT JOIN, вы сохраните все записи из
problem и соответствующие им записи из
company, где problem.company_id=NULL, будут иметь пустые значения.
Помните об этом важном аспекте при работе с джоинами, чтобы получать точные и полные результаты! И ставьте 🔥, если было полезно!
📈
Симулейтив | 📱
ВК | 📱
YouTube | 📱
Канал о DS