Skip to content

[NEW] Левое соединение с проверкой на поле из второй таблицы в секции ГДЕ #3847

@BarinovIN

Description

@BarinovIN

Описание проблемы, ошибки, которую надо диагностировать

Левое соединение с проверкой на поле из второй таблицы в секции ГДЕ.
Непонятно, соединение должно быть внутренним или условие должно быть в условиях соединения?
Т.е. такой текст запроса наверняка является ошибочным. Какая именно ошибка допущена зависит от того, какой из результатов требуется получить этим запросом.

Пример текста запроса с ошибкой:

ВЫБРАТЬ
  ...
ИЗ 
  Левая КАК Левая
    ЛЕВОЕ СОЕДИНЕНИЕ Правая КАК Правая
      ПО <Условия соединения>
ГДЕ
  Правая.Поле = &Параметр
  1. Если нужны только строки, для которых есть данные в Правой таблице, то нужно использовать внутреннее соединение. С левым соединением результат будет тот же, но производительность может быть хуже.
  2. Если нужны все записи из Левой таблицы, то условия на поля Правой таблицы должны быть в условиях соединения. С условием в секции ГДЕ результат будет другим, возможна ошибка в логике.

Есть ли ещё возможные варианты решаемых таким запросом задач?

Исключение:

ВЫБРАТЬ
  ...
ИЗ 
  Левая КАК Левая
    ЛЕВОЕ СОЕДИНЕНИЕ Правая КАК Правая
      ПО <Условия соединения>
ГДЕ
  Правая.Поле is NULL

В этом тексте нет ошибки. В результате нужны только такие записи Левой таблицы, для которых нет подходящих записей в Правой. В этом случае, и в выбранных полях не должно быть полей из Правой таблицы, т.к. все они NULL.

Ссылка на источник, подтверждающее нарушение либо обоснование наличия проблемы

Не удалось подобрать подходящих ссылок.

Параметры диагностики

Тип Статья на русском

  • 🐜 Ошибка
  • 👮 Уязвимость
  • 💂‍♂️ Потенциальная уязвимость
  • 💩 Качество кода
  • :trollface: Другое

Важность Статья на русском

  • 💔 Блокирующая / Blocker
  • ❤️ Критическая / Critical
  • 💛 Важная / Major
  • 💙 Незначительная / Minor
  • 💚 Информационная / Info
  • 💞 Другое

Тэги Статья на русском

  • STANDARD - "Нарушение стандартов 1С"
  • LOCKINOS - "Не будет работать в другой ОС"
  • SQL - "Проблема с запросом"
  • PERFORMANCE - "Проблема производительности"
  • BRAINOVERLOAD - "Непонятный код"
  • BADPRACTICE - "Плохая практика программирования"
  • CLUMSY - "Излишние действия"
  • DESIGN - "Ошибка в проектировании"
  • SUSPICIOUS - "Подозрительный код"
  • UNPREDICTABLE - "Непредсказуемо работающий код"
  • DEPRECATED - "Устаревшая функциональность"
  • ERROR - "Ошибочная конструкция"
  • LOCALIZE - "Проблемы локализации"

Время на исправление (минут)

3 минуты

Дополнительная информация

Metadata

Metadata

Assignees

No one assigned

    Labels

    component/diagnosticsДоработка / создание диагностики

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions