SQLHUB Telegram 2062
🟡🔵 Разбираемся с SQL JOIN и фильтрами в OUTER JOIN

Одна из самых частых ошибок при работе с SQL - путаница между условием в ON и фильтром в WHERE. На картинке это отлично показано.

Когда мы пишем LEFT OUTER JOIN, мы ожидаем, что слева попадут все строки. Но результат зависит от того, где именно мы накладываем фильтры.

Пример:

У нас есть две таблицы:
- Левая: фигура + число
- Правая: число + фигура

Мы делаем LEFT OUTER JOIN.

1. Фильтр в ON
Если написать ON right_table.number = 1, то соединение будет проверять условие именно во время джойна. Это значит: строки слева сохранятся, даже если справа нет совпадений — просто будут NULL.

2. Фильтр в WHERE
Если написать WHERE left_table.number = 1, то фильтрация произойдёт уже после объединения. В этом случае строки, не прошедшие условие, полностью исчезнут из результата.

Почему это нужно знать?

- ON управляет логикой соединения.
- WHERE убирает строки после соединения.
- В OUTER JOIN это принципиальная разница: при фильтре в ON мы сохраним «пустые» строки, при фильтре в WHERE они будут удалены.


📌 Вывод:
- Если нужно оставить все строки из левой таблицы и лишь добавить совпадения справа - фильтр ставим в ON.
- Если хотим действительно отобрать только подходящие строки — фильтр в WHERE.

Именно поэтому в сложных запросах всегда спрашивай себя: фильтр — это часть логики соединения или это окончательное ограничение?

#SQL #joins #databases
9👍9🔥5



tgoop.com/sqlhub/2062
Create:
Last Update:

🟡🔵 Разбираемся с SQL JOIN и фильтрами в OUTER JOIN

Одна из самых частых ошибок при работе с SQL - путаница между условием в ON и фильтром в WHERE. На картинке это отлично показано.

Когда мы пишем LEFT OUTER JOIN, мы ожидаем, что слева попадут все строки. Но результат зависит от того, где именно мы накладываем фильтры.

Пример:

У нас есть две таблицы:
- Левая: фигура + число
- Правая: число + фигура

Мы делаем LEFT OUTER JOIN.

1. Фильтр в ON
Если написать ON right_table.number = 1, то соединение будет проверять условие именно во время джойна. Это значит: строки слева сохранятся, даже если справа нет совпадений — просто будут NULL.

2. Фильтр в WHERE
Если написать WHERE left_table.number = 1, то фильтрация произойдёт уже после объединения. В этом случае строки, не прошедшие условие, полностью исчезнут из результата.

Почему это нужно знать?

- ON управляет логикой соединения.
- WHERE убирает строки после соединения.
- В OUTER JOIN это принципиальная разница: при фильтре в ON мы сохраним «пустые» строки, при фильтре в WHERE они будут удалены.


📌 Вывод:
- Если нужно оставить все строки из левой таблицы и лишь добавить совпадения справа - фильтр ставим в ON.
- Если хотим действительно отобрать только подходящие строки — фильтр в WHERE.

Именно поэтому в сложных запросах всегда спрашивай себя: фильтр — это часть логики соединения или это окончательное ограничение?

#SQL #joins #databases

BY Data Science. SQL hub




Share with your friend now:
tgoop.com/sqlhub/2062

View MORE
Open in Telegram


Telegram News

Date: |

Telegram is a leading cloud-based instant messages platform. It became popular in recent years for its privacy, speed, voice and video quality, and other unmatched features over its main competitor Whatsapp. According to media reports, the privacy watchdog was considering “blacklisting” some online platforms that have repeatedly posted doxxing information, with sources saying most messages were shared on Telegram. Over 33,000 people sent out over 1,000 doxxing messages in the group. Although the administrators tried to delete all of the messages, the posting speed was far too much for them to keep up. How to Create a Private or Public Channel on Telegram? ZDNET RECOMMENDS
from us


Telegram Data Science. SQL hub
FROM American