Преобразование запросов
Использование математических методов для языка запросов.
- Описание
- Подробнее
Описание
Два утверждения.
Мы все куда-то торопимся, поэтому кратко.
- Левое соединение с дополнительным условием в запросе SQL можно заменить внутренним соединением, если не используются функции null.
- Полное соединение в запросе SQL можно заменить объединением с группировкой, если поля группировки не содержат значений null.
Статья окончена, спасибо за внимание.
Пояснение.
- Многие программисты используют эти преобразования запросов, но не задумываются об условиях применения.
- Предполагаем, что поля таблиц СУБД не содержат null, это настройки по умолчанию:
MS https://docs.microsoft.com/ru-RU/sql/connect/ado-net/sql/handle-null-values?view=sql-server-2017
PG https://postgrespro.ru/docs/postgrespro/13/ddl-constraints#id-1.5.4.6.6
null возникают в результате (правое, левое, полное) соединения таблиц, когда условия соединения не выполняется и присоединяемые поля отсутствуют.
- Функции null – например: (Аргумент) is null, (Аргумент) is not null, isnull(Аргумент1, Аргумент2)
MS https://docs.microsoft.com/ru-ru/sql/t-sql/queries/is-null-transact-sql?view=sql-server-ver15
PG https://postgrespro.ru/docs/postgresql/9.6/functions-comparison
- Два значения null никогда не равны между собой, однако если столбец группирования содержит значения NULL, они рассматриваются как равные и помещаются в одну группу.

