Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Подскажите про Левое Соединение

Подскажите про Левое Соединение
Я
   bvn-2005
 
11.12.18 - 15:50
Вот такой запрос:
        |ВЫБРАТЬ
        |    ДополнительныеСведения.Свойство КАК Свойство,
        |    ДополнительныеСведения.Значение КАК Значение,
        |    Номенкл.Ссылка КАК Ссылка
        |ПОМЕСТИТЬ НомШир
        |ИЗ
        |    Номенкл КАК Номенкл
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
        |        ПО Номенкл.Ссылка = ДополнительныеСведения.Объект
        |ГДЕ
        |    ДополнительныеСведения.Свойство.Заголовок = &Ширина

Все бы хорошо, но когда в таблице ДополнительныеСведения нет соответсвующего значение, то и весь результат получается пустым. Как сделать, чтобы Номенклатура попадала в запрос?
 
 
   Numerus Mikhail
 
1 - 11.12.18 - 15:51
|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
        |        ПО Номенкл.Ссылка = ДополнительныеСведения.Объект И ДополнительныеСведения.Свойство.Заголовок = &Ширина

условие ГДЕ убрать вообще
   olegves
 
2 - 11.12.18 - 15:51
(0) ДополнительныеСведения.Свойство.Заголовок = &Ширина убери в условие соединения, а то у тебя получается внутреннее
   Вафель
 
3 - 11.12.18 - 16:01
у свойств есть реквизит Имя
   bvn-2005
 
4 - 11.12.18 - 16:07
А как тогда отобрать именно Ширину?
   sima
 
5 - 11.12.18 - 16:18
(4) Держи:
        |ВЫБРАТЬ
        |    ДополнительныеСведения.Свойство КАК Свойство,
        |    ДополнительныеСведения.Значение КАК Значение,
        |    Номенкл.Ссылка КАК Ссылка
        |ПОМЕСТИТЬ НомШир
        |ИЗ
        |    Номенкл КАК Номенкл
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
        |        ПО Номенкл.Ссылка = ДополнительныеСведения.Объект И ДополнительныеСведения.Свойство.Заголовок = &Ширина
   bvn-2005
 
6 - 11.12.18 - 16:28
О, так работает! Спасибо!
   Numerus Mikhail
 
7 - 11.12.18 - 16:33
(6) а теперь скажи, чем это отличается от того, что я написал в (1)?)
   sima
 
8 - 11.12.18 - 16:37
(6) пожалуйста
(7) я подумывал даже кавычки добавить и точку с запятой вконце запроса, что бы зашло
   Chameleon1980
 
9 - 12.12.18 - 09:34
ТС не упусти момент усвоить, что условия
в запросе (не в соединении) превращают твое левое соединение во внутреннее. Нередкая ошибка просто.
   quest
 
10 - 12.12.18 - 10:09
(9) расшифруй мысль
 
 Рекламное место пустует
   exwill
 
11 - 12.12.18 - 10:11
(10) Левое соединение не всегда левое. Так понятно?
   quest
 
12 - 12.12.18 - 10:23
(11) Нет. На примере можешь показать?
   Numerus Mikhail
 
13 - 12.12.18 - 10:26
(12) Пример в (0)
   catena
 
14 - 12.12.18 - 10:33
(10)Условия, наложенные на поля левой таблицы, исключают все значения NULL из результата. А без NULLя слева - это уже не левое, а внутреннее.
   HardBall
 
15 - 12.12.18 - 10:39
|ГДЕ
        |    ДополнительныеСведения.Свойство.Заголовок = &Ширина
Это условие на результирующую таблицу.
Все записи с NULL уйдут.
Причем здесь внутреннее соединение.
   Chameleon1980
 
16 - 12.12.18 - 11:36
(15) с херали баня то?
   quest
 
17 - 12.12.18 - 11:53
(14) То что результат будет аналогичен - это понятно, но как левое соединение превращается во внутреннее?
Насколько понимаю - соединение отдельно, условия отдельно. Или теперь платформа при компиляции запроса делает за меня эту замену?
   RomanYS
 
18 - 12.12.18 - 11:55
(17) речь именно про результат. Если ты хочешь получить результат внутреннего соединения, не надо делать левое с условиями на правую таблицу.
   Chameleon1980
 
19 - 12.12.18 - 12:02
(18) Одно "не" забыл
   GANR
 
20 - 12.12.18 - 12:06
(0) Баяяяяян... Если в правой таблице NULL, то результат проверки условия в ГДЕ будет ЛОЖЬ. Понятно?
   catena
 
21 - 12.12.18 - 12:16
(17)Пф, ну если говорить о том, что делает платформа при компиляции, то текст запроса из окошка 1С можно вообще не рассматривать.
   RomanYS
 
22 - 12.12.18 - 12:16
(19) нет, не забыл.
Можно вообще без условий: "не надо делать левое с условиями на правую таблицу"
   Chameleon1980
 
23 - 12.12.18 - 12:22
(22)
предположил, что должно было звучать так
"Если ты не хочешь получить результат внутреннего соединения, не надо делать левое с условиями на правую таблицу", 
а не так
"Если ты хочешь получить результат внутреннего соединения, не надо делать левое с условиями на правую таблицу"
   Chameleon1980
 
24 - 12.12.18 - 12:23
ну и да...
так проще
"не надо делать левое с условиями на правую таблицу"


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует