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

Запрос соединения ???

Автор joiner, 22 июн 2016, 04:51

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

joiner

Здравствуйте, делаю запрос с соединением


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


Временная таблица содержит 3 записи,
Регистр сведений содержит 2 записи, эти записи удовлетворяют параметрам

В результате выполнения запроса я получаю 2 записи ???
Если меняю ЛЕВОЕ СОЕДИНЕНИЕ на ПОЛНОЕ СОЕДИНИЕ, то все равно получаю 2 записи (??!!)
Тупо откидываются записи временной таблицы.
Почему так происходит?, как исправить?
                                                                Спасибо.

has

Скрины таблицы и регистра покажите. Уберите условие ГДЕ, для фильтра используйте параметры виртуальной таблицы

LexaK

для того что вы хотите получить, ваш запрос написан не правильно
необходимо перенести условие из области ГДЕ в область ПО
вот результат

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

//ГДЕ



в результате будут ваши три записи.
Вообще старайтесь писать запросы правильно и оптимально, за такой запрос, на экзамене по 1С вам бы поставили ДВОЙКУ. :(
если помогло нажмите: Спасибо!

Теги:

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

Рейтинг@Mail.ru

Поиск