Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 сен 2024, 20:37

Убрать соединение с подзапросом

Автор bolobol, 13 сен 2011, 19:27

0 Пользователей и 1 гость просматривают эту тему.

bolobol

Здравствуйте!

Подскажите, пожалуйста, как переписать нижеследующее внутреннее соединение с подзапросом, чтобы в результате укладываться в рекомендации, как минимум "не используйте соединения с подзапросами". При этом не потерять производительность!

Краткое человечье описанье:
Выбрать неудалённые Ведомости, которые не присутствуют в неудалённых СписанияхСРасчётногоСчёта в табличной части ПеречислениеЗаработнойПлаты.

Подзапрос Выбирает неудалённые СписанияСРасчётногоСчёта. Соединяется с таблицей своей табличной части ПеречислениеЗаработнойПлаты. С результатом - соединяется Ведомости на ЗП и, если Ведомости при соединении получают NULL, значит - не оплачены.

[sql]
ВЫБРАТЬ
   ЛОЖЬ КАК Флаг,
   ЗарплатаКВыплатеОрганизаций.СпособВыплаты,
   ЗарплатаКВыплатеОрганизаций.Комментарий,
   ЗарплатаКВыплатеОрганизаций.СуммаДокумента,
   ЗарплатаКВыплатеОрганизаций.Организация,
   ЗарплатаКВыплатеОрганизаций.Дата КАК Дата,
   ЗарплатаКВыплатеОрганизаций.Ссылка
ИЗ
   Документ.ЗарплатаКВыплатеОрганизаций КАК ЗарплатаКВыплатеОрганизаций
      ЛЕВОЕ СОЕДИНЕНИЕ Документ.СписаниеСРасчетногоСчета.ПеречислениеЗаработнойПлаты КАК СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты
         ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            СписаниеСРасчетногоСчета.Ссылка КАК Ссылка
         ИЗ
            Документ.СписаниеСРасчетногоСчета КАК СписаниеСРасчетногоСчета
         ГДЕ
            СписаниеСРасчетногоСчета.ПометкаУдаления = &ЛОЖЬ) КАК ВложенныйЗапрос
         ПО (ВложенныйЗапрос.Ссылка = СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ссылка)
      ПО ЗарплатаКВыплатеОрганизаций.Ссылка = СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ведомость.Ссылка
ГДЕ
   СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ссылка ЕСТЬ NULL
   И ЗарплатаКВыплатеОрганизаций.ПометкаУдаления = &ЛОЖЬ

УПОРЯДОЧИТЬ ПО
   Дата УБЫВ
[/sql]

has

А соединения с временной таблицей можно использовать?

bolobol

А, наверное, не нужно. Вот вариант, что предложили, красиво и работает быстро:


ВЫБРАТЬ
    ЗарплатаКВыплатеОрганизаций.СпособВыплаты,
    ЗарплатаКВыплатеОрганизаций.Комментарий,
    ЗарплатаКВыплатеОрганизаций.СуммаДокумента,
    ЗарплатаКВыплатеОрганизаций.Организация,
    ЗарплатаКВыплатеОрганизаций.Дата,
    ЗарплатаКВыплатеОрганизаций.Ссылка,
    ЗарплатаКВыплатеОрганизаций.КраткийСоставДокумента
ИЗ
    Документ.ЗарплатаКВыплатеОрганизаций КАК ЗарплатаКВыплатеОрганизаций
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.СписаниеСРасчетногоСчета.ПеречислениеЗаработнойПлаты КАК СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты
        ПО ЗарплатаКВыплатеОрганизаций.Ссылка = СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ведомость.Ссылка
            И (СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ссылка.ПометкаУдаления = &ЛОЖЬ)
ГДЕ
    СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ссылка ЕСТЬ NULL
    И ЗарплатаКВыплатеОрганизаций.ПометкаУдаления = &ЛОЖЬ

УПОРЯДОЧИТЬ ПО
    ЗарплатаКВыплатеОрганизаций.Дата УБЫВ


Условие на неудалённость документа вставлено прямо в условие связи.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск