Имя: Пароль:
1C
1С v8
Левое соединение
,
0 ejikbeznojek
 
10.03.15
18:34
Всем привет.
Есть запрос по двум справочникам и левое соединение.
Почему то отрабатывает как полное.
т.е. там где нет деклараций, номенклатуру тоже не выводит

ВЫБРАТЬ
    "Остатки" КАК Раздел,
    Номенклатура.Ссылка.Родитель КАК Номенклатура,
    Номенклатура.Наименование,
    Номенклатура.Размер,
    Номенклатура.Цвет,
    Номенклатура.Родитель.Коллекция,
    Номенклатура.ОсновнаяЕдиница,
    Номенклатура.Родитель.ВидНоменклатуры,
    Номенклатура.Ссылка.Родитель.ПоловозрастнойПризнак КАК ПоловозрастнойПризнак,
    Номенклатура.Родитель.Состав,
    Номенклатура.Родитель.СтавкаНДС,
    Номенклатура.Родитель.НомерГТД,
    Номенклатура.Родитель.КодПроизводителя,
    Номенклатура.Родитель.Брэнд,
    Номенклатура.Родитель.БрендДляСайта,
    Номенклатура.Ссылка,
    Декларация.Ссылка КАК декларация,
    Декларация.СтранаПроисхождения,
    Декларация.Изготовитель,
    Декларация.ДатаОкончания
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Декларация КАК Декларация
        ПО Номенклатура.Родитель = Декларация.Объект
ГДЕ
    Номенклатура.ПометкаУдаления = ЛОЖЬ
    И Номенклатура.ЭтоГруппа = ЛОЖЬ
    И Декларация.ПометкаУдаления = ЛОЖЬ
1 ale-sarin
 
10.03.15
18:35
И Декларация.ПометкаУдаления = ЛОЖЬ
переместить в условия соединения
2 Господин ПЖ
 
10.03.15
18:36
>И Декларация.ПометкаУдаления = ЛОЖЬ

в соединение
3 Провинциальный 1сник
 
10.03.15
18:36
(0) "Почему то отрабатывает как полное.
т.е. там где нет деклараций, номенклатуру тоже не выводит "
Это называется не полное, а наоборот - внутреннее.
4 VikingKosmo
 
10.03.15
18:37
наверное потому что
ГДЕ
    Номенклатура.ПометкаУдаления = ЛОЖЬ
    И Номенклатура.ЭтоГруппа = ЛОЖЬ
    И Декларация.ПометкаУдаления = ЛОЖЬ
5 ejikbeznojek
 
10.03.15
18:37
не совсем пойму как условия в соединения писать (2)
6 ejikbeznojek
 
10.03.15
18:38
Просто произвольное?
7 ejikbeznojek
 
10.03.15
18:39
Справочник.Номенклатура КАК Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Декларация КАК Декларация
        ПО Номенклатура.Родитель = Декларация.Объект
            И (Декларация.ПометкаУдаления = ЛОЖЬ)
8 VikingKosmo
 
10.03.15
18:39
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Декларация КАК Декларация
        ПО Номенклатура.Родитель = Декларация.Объект
       И Декларация.ПометкаУдаления = ЛОЖЬ
9 ejikbeznojek
 
10.03.15
18:43
Урра!!! Заработало!!
10 1976vas
 
10.03.15
18:45
А можно вопрос - почему, от спецов?
11 Serginio1
 
10.03.15
18:49
(10) Условие накладывается после соединения.
А сравнение на Null всегда ложь
И Декларация.ПометкаУдаления = ЛОЖЬ
12 Serginio1
 
10.03.15
18:50
Сравнение с NULL всегда ложь
13 Serginio1
 
10.03.15
18:53
Вернее https://ru.wikipedia.org/wiki/NULL_(SQL)
Любая операция сравнения с NULL (даже операция «NULL = NULL»), даёт в результате значение «неизвестность» (UNKNOWN). Окончательный результат при этом зависит от полного логического выражения в соответствии с таблицей истинности логических операций. Если сравнение с NULL есть вся логическая операция целиком (а не её часть), то результат её аналогичен FALSE (выражение вида IF <что-то> = NULL THEN <действие1> ELSE <действие2> END IF всегда будет приводить к выполнению действия2).
14 Serginio1
 
10.03.15
18:54