|
левое соединение 1с 8.2 через условие, работает как внутреннее | ☑ | ||
---|---|---|---|---|
0
DmitriyDI
21.08.15
✎
12:56
|
Делаю нечто похожее на срез остатков на каждую дату, но соединяю левым соединением через условие вида:
ВЫБОР КОГДА Бонусы.УсловияРасчетов = ЗНАЧЕНИЕ(Перечисление.УсловияРасчетов.Первое) ТОГДА ВложенныйЗапрос.Период1 >= Бонусы.Период КОГДА Бонусы.УсловияРасчетов = ЗНАЧЕНИЕ(Перечисление.УсловияРасчетов.Второе) ТОГДА ВложенныйЗапрос.Период2 >= Бонусы.Период ИНАЧЕ ЛОЖЬ КОНЕЦ ВложенныйЗапрос.Период1 и ВложенныйЗапрос.Период2 могут быть пустой датой, и почемуто- это условие работает ни как левое соединение, а как внутреннее. |
|||
1
AlexTim03
21.08.15
✎
12:57
|
Мега-баян
|
|||
2
hhhh
21.08.15
✎
12:58
|
что с чем соединяется здесь?
|
|||
3
DmitriyDI
21.08.15
✎
12:58
|
(1) давай, трави в чем проблема)? соединяю не через ГДЕ
|
|||
4
Nuobu
21.08.15
✎
12:59
|
(2) Бонусы со вложеннымЗапросом.
(0) Перенеси в ГДЕ. |
|||
5
DmitriyDI
21.08.15
✎
12:59
|
ВложенныйЗапрос левым соединением с бонусами (2)
|
|||
6
Матиус
21.08.15
✎
12:59
|
в результат попадают записи если одно условий = истина
|
|||
7
Матиус
21.08.15
✎
13:00
|
сам запрос где?
|
|||
8
Господин ПЖ
21.08.15
✎
13:00
|
по ложь будет пусто
|
|||
9
DmitriyDI
21.08.15
✎
13:01
|
(4) а можете объяснить почему так?
я всегда думал, что наоборот условие в где делает левое соединение, внутренним. (6) (8) так записи из ВложенныйЗапрос должны быть все, соединение то левое? |
|||
10
hhhh
21.08.15
✎
13:02
|
может там ВложенныйЗапрос.Период равно NULL? тогда действительно ЛОЖЬ вернет
|
|||
11
Nuobu
21.08.15
✎
13:03
|
(9) Я прикалываюсь.
Если это у тебя поле, то тогда он и правда правильно поступает. Переделай с помощью ЕстьNull(ВложенныйЗапрос.Период2, ДатаВремя(1,1,1)). Должно помочь. |
|||
12
DmitriyDI
21.08.15
✎
13:08
|
(11) во вложенном запросе я делаю проверку на естьнул, попробовал все равно прописать, не взлетело.
|
|||
13
Nuobu
21.08.15
✎
13:10
|
(12) Тогда, может, дело не этом условии?
Удали из условия ВложенныйЗапрос, поставь вместо сравнения Истину и проверь. |
|||
14
DmitriyDI
21.08.15
✎
13:13
|
(13) проверял, убираю условие, все как надо работает
|
|||
15
hhhh
21.08.15
✎
13:15
|
ну может действительно пустые даты ему подсовываете?
|
|||
16
DmitriyDI
21.08.15
✎
13:16
|
упростил условие: ЕСТЬNULL(ВложенныйЗапрос.Период1, ДАТАВРЕМЯ(1, 1, 1)) >= Бонусы.Период, работает как внутреннее опять, убираю, как левое
|
|||
17
DmitriyDI
21.08.15
✎
13:18
|
(15) даже если пустая дата в период1, то это же условие на соединение, почему часть документов не попадает...
|
|||
18
hhhh
21.08.15
✎
13:21
|
(17) а в ГДЕ что написано?
|
|||
19
Nuobu
21.08.15
✎
13:22
|
(16) Может, у тебя ВложенныйЗапрос это основная таблица? Может, галочка не с той стороны стоит?
|
|||
20
hhhh
21.08.15
✎
13:24
|
(19) так и есть, читай (5)
|
|||
21
DmitriyDI
21.08.15
✎
13:28
|
(18) ничего, может скд что подставляет, сейчас в консоли скд запущу проверю.
|
|||
22
DmitriyDI
21.08.15
✎
13:33
|
(21) скд это условие изменяет и оно оказывается в блоке ГДЕ!
|
|||
23
DmitriyDI
21.08.15
✎
13:38
|
всем спасибо, разобрался, соединение было в норме, просто в скд был отбор, по реквизиту, который я не проверил на нулл.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |