|
Левое соединение | ☑ | ||
---|---|---|---|---|
0
Makar47
27.07.17
✎
11:34
|
Это, какой-то, позор! (с)
Ткните носом, пожалуйста - что здесь не так? Ну простейший же запрос! ВЫБРАТЬ ЗаказКлиентаТовары.Номенклатура КАК Номенклатура, ПеремещениеТоваровТовары.Номенклатура КАК Номенклатура1 ИЗ Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары ПО ЗаказКлиентаТовары.Номенклатура = ПеремещениеТоваровТовары.Номенклатура ГДЕ ЗаказКлиентаТовары.Ссылка = &Ссылка И ПеремещениеТоваровТовары.Ссылка = &СсылкаП В Заказе 15 строк, в Перемещении - 7. Результат - 7 (при любом варианте соединения, т.е. фактически всегда получаю внутреннее). Почему? |
|||
1
Волшебник
модератор
27.07.17
✎
11:35
|
Не надо так соединять документы
|
|||
2
Дарлок
27.07.17
✎
11:36
|
(0) останутся только совпадающие номенклатуры... делай через объединить ВСЕ
|
|||
3
1dvd
27.07.17
✎
11:36
|
потому что в ГДЕ ПеремещениеТоваровТовары.Ссылка = &СсылкаП
|
|||
4
vde69
модератор
27.07.17
✎
11:37
|
ты выводишь ВСЕ документы в базе
зы у тебя нет условия ПеремещениеТоваровТовары.Ссылка = ..... условия ГДЕ - это НЕ ТО МЕСТО где это должно быть |
|||
5
Волшебник
модератор
27.07.17
✎
11:38
|
Этот запрос к документам вообще не нужен.
|
|||
6
vde69
27.07.17
✎
11:39
|
ВЫБРАТЬ
ЗаказКлиентаТовары.Номенклатура КАК Номенклатура, ПеремещениеТоваровТовары.Номенклатура КАК Номенклатура1 ИЗ Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары ПО ЗаказКлиентаТовары.Номенклатура = ПеремещениеТоваровТовары.Номенклатура И ЗаказКлиентаТовары.Ссылка = &Ссылка И ПеремещениеТоваровТовары.Ссылка = &СсылкаП |
|||
7
Makar47
27.07.17
✎
11:39
|
(3) - а что там не так?
(1) - а как? (2) - Почему? Левое же соединение. Сделал синтетический пример - пустая конфа, два дока и один справочник на 5 наименований. Все работает (??). |
|||
8
1dvd
27.07.17
✎
11:41
|
(7) конечно, работает он тебе покажет номенклатуру, которая есть в обоих документах
|
|||
9
braslavets
27.07.17
✎
11:41
|
потому что null
|
|||
10
Дарлок
27.07.17
✎
11:42
|
(7) убери условие И ПеремещениеТоваровТовары.Ссылка = &СсылкаП
и выведи в поля ПеремещениеТоваровТовары.Ссылка там где номенклатура не пересекается оно будет равно NULL |
|||
11
Волшебник
модератор
27.07.17
✎
11:43
|
(7) Вообще никак. Запросы нужно делать к регистрам
|
|||
12
Makar47
27.07.17
✎
11:43
|
(6) - кака будет... Овер 120000 строк выдаст..
|
|||
13
vde69
27.07.17
✎
11:44
|
(12) обоснуй
|
|||
14
Makar47
27.07.17
✎
11:45
|
(13) - проверил опытным путем
|
|||
15
vde69
27.07.17
✎
11:47
|
(14) не верю, ты где то не то сделал
|
|||
16
1dvd
27.07.17
✎
11:47
|
(13) Макар прав, в запрос попадут все заказы
|
|||
17
Alexandr_U1982
27.07.17
✎
11:51
|
ВЫБРАТЬ
ЗаказКлиентаТовары.Номенклатура КАК Номенклатура, ПеремещениеТоваровТовары.Номенклатура КАК Номенклатура1 ИЗ Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары ПО ЗаказКлиентаТовары.Номенклатура = ПеремещениеТоваровТовары.Номенклатура И ПеремещениеТоваровТовары.Ссылка = &СсылкаП ГДЕ ЗаказКлиентаТовары.Ссылка = &Ссылка |
|||
18
sergeyshik
27.07.17
✎
11:53
|
Ну либо через временные таблицы или внутренние запросы для выборки номенклатуры из определенных доков, а потом уже левое соединение
|
|||
19
Makar47
27.07.17
✎
11:56
|
(18) - да, через ВТ, работает.
Чую, правда кроется где-то в (10)... |
|||
20
1dvd
27.07.17
✎
11:58
|
||||
21
vde69
27.07.17
✎
11:58
|
ихмо автору нужно что то типа
ВЫБРАТЬ ЗаказКлиентаТовары.Номенклатура КАК Номенклатура, ПеремещениеТоваровТовары.Номенклатура КАК Номенклатура1 ИЗ Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары СОЕДИНЕНИЕ Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары ПО ЗаказКлиентаТовары.Номенклатура = ПеремещениеТоваровТовары.Номенклатура И ЗаказКлиентаТовары.Ссылка = ПеремещениеТоваровТовары.Ссылка.Заказ ГДЕ ЗаказКлиентаТовары.Ссылка = &Ссылка |
|||
22
Makar47
27.07.17
✎
12:01
|
(17), (21) - да! Это оно! Спасибо, попробую разобраться почему так...
|
|||
23
h-sp
27.07.17
✎
12:11
|
(22) ну сам прикинь. Если левое соединение, то у тебя
ПеремещениеТоваровТовары.Ссылка = NULL ты пишешь условие ГДЕ ПеремещениеТоваровТовары.Ссылка = &СсылкаП и на что-то надеешься. На какую-то мистику. Чтобы NULL вдруг стало равно &СсылкаП |
|||
24
Basilio
27.07.17
✎
12:14
|
ПеремещениеТоваровТовары.Ссылка = &СсылкаП
Изза этого условия Левое соединение становится внутренним. |
|||
25
Makar47
27.07.17
✎
12:22
|
(23) >> Если левое соединение, то у тебя
ПеремещениеТоваровТовары.Ссылка = NULL -- С чего это вдруг там NULL? Я же через параметр явно передаю ссылку на конкретное перемещение |
|||
26
dezss
27.07.17
✎
12:24
|
(25) и левое становится врутренним
|
|||
27
Sserj
27.07.17
✎
12:25
|
(25) Да не парьсься. Либо сначала выбери товары заказа во временную таблицу и потом к ней левым соединеним прлепляй товары перемещений, либо выбирай товары из товары заказа и левое соединение к подзапросу товаров перемещения.
|
|||
28
dezss
27.07.17
✎
12:27
|
(25) ты ж сам говоришь, что в заказе у тебя 15 строк, а в перемещении только 7.
Эти 7 присоединяются к тем 15...у семи строк есть перемещение, у остальных перемещение null. А в ГДЕ ты явно указываешь, что null быть не может, может быть только то, что ты передаешь параметром, вот эти 8 строк и отсекаются. |
|||
29
xXeNoNx
27.07.17
✎
12:32
|
(0)Фу как не эстетично.
Берем вирт таблицы регистров, накладываем фильтры, соединяем. Если доки не проведены, то отбираем товары перемещения, цепляем левым к Товарам заказа, индексы не надо |
|||
30
h-sp
27.07.17
✎
12:46
|
(25) в общем пиши так
ГДЕ ЗаказКлиентаТовары.Ссылка = &Ссылка И ЕСТЬNULL(ПеремещениеТоваровТовары.Ссылка, &СсылкаП) = &СсылкаП |
|||
31
Волшебник
модератор
27.07.17
✎
12:50
|
(29) А я уже это говорил в (1)(5)(11), но меня все игнорируют
|
|||
32
Makar47
27.07.17
✎
13:44
|
(31) - не игнорирую я никого :) Осиливаю по немногу...
|
|||
33
Makar47
27.07.17
✎
13:47
|
(28) ёкарный бабай! Все понял! Спасибо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |