|
Полное соединение в запросе не работает. | ☑ | ||
---|---|---|---|---|
0
Koliaff
17.07.14
✎
13:24
|
ВЫБРАТЬ
ИтоговаяТаблица.Менеджер, ИтоговаяТаблица.Контрагент, СУММА(ИтоговаяТаблица.Количество) КАК Количество, СУММА(ИтоговаяТаблица.Стоимость) КАК Стоимость, ИтоговаяТаблица.Номенклатура ИЗ (ВЫБРАТЬ ПродажиОбороты.Контрагент.ОсновнойМенеджерПокупателя КАК Менеджер, ПродажиОбороты.Контрагент КАК Контрагент, СУММА(ПродажиОбороты.КоличествоОборот) КАК Количество, СУММА(ПродажиОбороты.СтоимостьОборот) КАК Стоимость, ПродажиОбороты.Номенклатура КАК Номенклатура ИЗ РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты СГРУППИРОВАТЬ ПО ПродажиОбороты.Контрагент, ПродажиОбороты.Контрагент.ОсновнойМенеджерПокупателя, ПродажиОбороты.Номенклатура ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ Контрагенты.ОсновнойМенеджерПокупателя, Контрагенты.Ссылка, 0, 0, NULL ИЗ Справочник.Контрагенты КАК Контрагенты) КАК ИтоговаяТаблица СГРУППИРОВАТЬ ПО ИтоговаяТаблица.Менеджер, ИтоговаяТаблица.Контрагент, ИтоговаяТаблица.Номенклатура ИТОГИ ПО ОБЩИЕ ================================================ Доброго времени суток. Хочу вывести количество купленного товара контрагентами в разрезе менеджеров. Сделать это так, чтобы выводились все контрагенты, а не только те, которые покупали товар. В результате запроса я получаю таблицу, в которой нет контрагентов с пустым количеством и суммой. Что я не так делаю ? |
|||
1
Borteg
17.07.14
✎
13:27
|
контрагенты левое соединение регистр продаж
|
|||
2
f_vadim
17.07.14
✎
13:27
|
Я ослеп? Я не вижу тут соединения.
|
|||
3
anaed
17.07.14
✎
13:27
|
(0) А где полное соединение?
|
|||
4
Koliaff
17.07.14
✎
13:31
|
Вернее не так задал вопрос. Когда фильтр по номенклатуре не ставишь - все выводится, если поставил, то выводятся контрагенты только те, по которым были продажи.
|
|||
5
Fram
17.07.14
✎
13:31
|
Соединение с объединением путать, конечно, нехорошо, но запрос должен работать.
|
|||
6
Fram
17.07.14
✎
13:31
|
(4)добавь в фильтр ИЛИ Номенклатура есть NULL
|
|||
7
Koliaff
17.07.14
✎
13:32
|
(Borteg) Делал и левым соединением контрагенты, все равно при фильтре по "Номенклатура" все контрагенты по которым не было продаж пропадают из отчета
|
|||
8
mikecool
17.07.14
✎
13:32
|
(4) надо же подумать, что номенклатура есть только в записях продаж
|
|||
9
France
17.07.14
✎
13:34
|
убойный запрос... объединять продажи и справочник контрагентов...
|
|||
10
anaed
17.07.14
✎
13:35
|
(7) запрос к справочнику контрагентов, который соединяется левым с выборкой по продажам, в которой накладывается фильтр по номенклатуре.
Только зачем такое извращение? |
|||
11
Koliaff
17.07.14
✎
13:35
|
(Fram) добавь в фильтр ИЛИ Номенклатура есть NULL
Растолкуй глупому .... |
|||
12
France
17.07.14
✎
13:38
|
левосоединяй контрагентов с регистром продаж...
|
|||
13
Koliaff
17.07.14
✎
13:39
|
(France) С самого начала было левое соединение - не помогает. Попробуй сам ...
|
|||
14
f_vadim
17.07.14
✎
13:41
|
(13) "Попробуй сам ..."
наха-а-ал :) |
|||
15
mikecool
17.07.14
✎
13:41
|
(14) да че там, пусть пробует сам!
|
|||
16
France
17.07.14
✎
13:41
|
(13) ВЫБРАТЬ
Контрагенты.ОсновнойМенеджерПокупателя, Контрагенты.Ссылка, ПродажиОбороты.Номенклатура, СУММА(ПродажиОбороты.КоличествоОборот) КАК КоличествоОборот, СУММА(ПродажиОбороты.СтоимостьОборот) КАК СтоимостьОборот ИЗ Справочник.Контрагенты КАК Контрагенты ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты ПО Контрагенты.Ссылка = ПродажиОбороты.Контрагент СГРУППИРОВАТЬ ПО Контрагенты.ОсновнойМенеджерПокупателя, Контрагенты.Ссылка, ПродажиОбороты.Номенклатура |
|||
17
catena
17.07.14
✎
13:42
|
(7)А что должно выводиться у контрагентов, у которых не было продаж с установленным фильтром по номенклатуре? Физический смысл выборки какой?
|
|||
18
France
17.07.14
✎
13:43
|
(13) попробовал))
|
|||
19
Fram
17.07.14
✎
13:44
|
(11) а че непонятно? скопируй результат без фильтра в эксель и поставь там фильтр. может так станет понятно
|
|||
20
hhhh
17.07.14
✎
13:46
|
(13) если контрагенты у вас без продаж, то у них номенклатура равна NULL. Вот по-нормальному на бумажке выпишите значение NULL и значение вашего фильтра и сравните их. Проверьте попадает значение NULL в ваш фильтр.
|
|||
21
France
17.07.14
✎
13:49
|
да фильтры ему пока не помогут.. у него запрос вообще не в тему требований..
|
|||
22
Koliaff
17.07.14
✎
13:55
|
(France) Сейчас пробую опять левым соединением. У меня запрос чуть сложнее, чем в (0). Сейчас попробую отпишусь.
|
|||
23
France
17.07.14
✎
13:57
|
(22) уже боюсь, что докажешь неработоспособность моего творения00..
|
|||
24
Fram
17.07.14
✎
13:58
|
(16)(23) ну и чем результат твоего запроса будет отличаться от (0)
|
|||
25
France
17.07.14
✎
14:03
|
(24) ну, хотя бы тем, что не нужно условие на нул для номенклатуры ставить..
зы.. ну и, получается, привычностью для меня левосоединения)) |
|||
26
France
17.07.14
✎
14:03
|
(24) блин...возвращаю запись)) практически ничем кроме того, что мне левосовединение оказалось удобнее))
|
|||
27
Koliaff
17.07.14
✎
14:04
|
ВЫБРАТЬ
ИтоговаяТаблица.Менеджер, ИтоговаяТаблица.Контрагент, ИтоговаяТаблица.Номенклатура КАК Номенклатура, СУММА(ИтоговаяТаблица.КоличествоВыставка) КАК КоличествоВыставка, СУММА(ИтоговаяТаблица.КоличествоПродано) КАК КоличествоПродано, СУММА(ИтоговаяТаблица.СтоимостьВыставка) КАК СтоимостьВыставка, СУММА(ИтоговаяТаблица.СтоимостьПродано) КАК СтоимостьПродано {ВЫБРАТЬ Менеджер.*, Контрагент.*, Номенклатура.*, КоличествоВыставка, КоличествоПродано, СтоимостьВыставка, СтоимостьПродано} ИЗ (ВЫБРАТЬ ПродажиКонтрагентам.Номенклатура КАК Номенклатура, СУММА(ЕСТЬNULL(ПродажиКонтрагентам.КоличествоВыставка, 0)) КАК КоличествоВыставка, СУММА(ЕСТЬNULL(ПродажиКонтрагентам.КоличествоПродано, 0)) КАК КоличествоПродано, СУММА(ЕСТЬNULL(ПродажиКонтрагентам.СтоимостьВыставка, 0)) КАК СтоимостьВыставка, СУММА(ЕСТЬNULL(ПродажиКонтрагентам.СтоимостьПродано, 0)) КАК СтоимостьПродано, Контрагенты.Ссылка КАК Контрагент, Контрагенты.ОсновнойМенеджерПокупателя КАК Менеджер ИЗ Справочник.Контрагенты КАК Контрагенты ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ВЫБОР КОГДА Выставка.Контрагент ЕСТЬ NULL ТОГДА НеВыстаска.Контрагент ИНАЧЕ Выставка.Контрагент КОНЕЦ КАК Контрагент, ВЫБОР КОГДА Выставка.КонтрагентОсновнойМенеджерПокупателя ЕСТЬ NULL ТОГДА НеВыстаска.КонтрагентОсновнойМенеджерПокупателя ИНАЧЕ Выставка.КонтрагентОсновнойМенеджерПокупателя КОНЕЦ КАК Менеджер, ВЫБОР КОГДА Выставка.Номенклатура ЕСТЬ NULL ТОГДА НеВыстаска.Номенклатура ИНАЧЕ Выставка.Номенклатура КОНЕЦ КАК Номенклатура, СУММА(ВЫБОР КОГДА Выставка.КоличествоОборот ЕСТЬ NULL ТОГДА 0 ИНАЧЕ Выставка.КоличествоОборот КОНЕЦ) КАК КоличествоВыставка, СУММА(ВЫБОР КОГДА НеВыстаска.КоличествоОборот ЕСТЬ NULL ТОГДА 0 ИНАЧЕ НеВыстаска.КоличествоОборот КОНЕЦ) КАК КоличествоПродано, СУММА(ВЫБОР КОГДА Выставка.СтоимостьОборот ЕСТЬ NULL ТОГДА 0 ИНАЧЕ Выставка.СтоимостьОборот КОНЕЦ) КАК СтоимостьВыставка, СУММА(ВЫБОР КОГДА НеВыстаска.СтоимостьОборот ЕСТЬ NULL ТОГДА 0 ИНАЧЕ НеВыстаска.СтоимостьОборот КОНЕЦ) КАК СтоимостьПродано ИЗ (ВЫБРАТЬ ПродажиОбороты.Номенклатура КАК Номенклатура, СУММА(ПродажиОбороты.КоличествоОборот) КАК КоличествоОборот, СУММА(ПродажиОбороты.СтоимостьОборот) КАК СтоимостьОборот, ПродажиОбороты.Контрагент.ОсновнойМенеджерПокупателя КАК КонтрагентОсновнойМенеджерПокупателя, ПродажиОбороты.Контрагент КАК Контрагент ИЗ РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, , ДокументПродажи.Выставка) КАК ПродажиОбороты СГРУППИРОВАТЬ ПО ПродажиОбороты.Номенклатура, ПродажиОбороты.Контрагент.ОсновнойМенеджерПокупателя, ПродажиОбороты.Контрагент) КАК Выставка ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПродажиОбороты.Номенклатура КАК Номенклатура, СУММА(ПродажиОбороты.КоличествоОборот) КАК КоличествоОборот, СУММА(ПродажиОбороты.СтоимостьОборот) КАК СтоимостьОборот, ПродажиОбороты.Контрагент.ОсновнойМенеджерПокупателя КАК КонтрагентОсновнойМенеджерПокупателя, ПродажиОбороты.Контрагент КАК Контрагент ИЗ РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, , НЕ ДокументПродажи.Выставка) КАК ПродажиОбороты СГРУППИРОВАТЬ ПО ПродажиОбороты.Номенклатура, ПродажиОбороты.Контрагент.ОсновнойМенеджерПокупателя, ПродажиОбороты.Контрагент) КАК НеВыстаска ПО Выставка.Номенклатура = НеВыстаска.Номенклатура И Выставка.КонтрагентОсновнойМенеджерПокупателя = НеВыстаска.КонтрагентОсновнойМенеджерПокупателя И Выставка.Контрагент = НеВыстаска.Контрагент СГРУППИРОВАТЬ ПО ВЫБОР КОГДА Выставка.Контрагент ЕСТЬ NULL ТОГДА НеВыстаска.Контрагент ИНАЧЕ Выставка.Контрагент КОНЕЦ, ВЫБОР КОГДА Выставка.Номенклатура ЕСТЬ NULL ТОГДА НеВыстаска.Номенклатура ИНАЧЕ Выставка.Номенклатура КОНЕЦ, ВЫБОР КОГДА Выставка.КонтрагентОсновнойМенеджерПокупателя ЕСТЬ NULL ТОГДА НеВыстаска.КонтрагентОсновнойМенеджерПокупателя ИНАЧЕ Выставка.КонтрагентОсновнойМенеджерПокупателя КОНЕЦ) КАК ПродажиКонтрагентам ПО (ПродажиКонтрагентам.Контрагент = Контрагенты.Ссылка) СГРУППИРОВАТЬ ПО ПродажиКонтрагентам.Номенклатура, Контрагенты.Ссылка, Контрагенты.ОсновнойМенеджерПокупателя) КАК ИтоговаяТаблица {ГДЕ ИтоговаяТаблица.Менеджер.*, ИтоговаяТаблица.Контрагент.*, ИтоговаяТаблица.Номенклатура.*, ИтоговаяТаблица.КоличествоВыставка, ИтоговаяТаблица.КоличествоПродано, ИтоговаяТаблица.СтоимостьВыставка, ИтоговаяТаблица.СтоимостьПродано} СГРУППИРОВАТЬ ПО ИтоговаяТаблица.Номенклатура, ИтоговаяТаблица.Контрагент, ИтоговаяТаблица.Менеджер ИТОГИ ПО ОБЩИЕ {ИТОГИ ПО Менеджер.*, Контрагент.*, Номенклатура.*} |
|||
28
Koliaff
17.07.14
✎
14:07
|
ВОт исходный мой запрос. Он не работает, когда выбирается фильтр по номенклатуре... Не выводит пустых контрагентов. Хотя без фильтра по номенклатуре пустые контрагенты (без продаж) есть. Так что жду ответа от (Fram) :
"добавь в фильтр ИЛИ Номенклатура есть NULL" Растолкуй пожалуйста где это условие поставить ... |
|||
29
AlexITGround
17.07.14
✎
14:11
|
(26) как это ничем не будет отличаться, что вы курите - оставьте попробовать
|
|||
30
Fram
17.07.14
✎
14:11
|
(28) Фильтр накладывается в построителе или СКД?.. Тогда мое предложение не катит.
Ты так и не понял почему не выводятся пустые? |
|||
31
France
17.07.14
✎
14:15
|
(29) ну, давай, и тебя послушаем.. запрос в 0, и мой левосоединенный должен вернуть один и тот же результат..
|
|||
32
Fram
17.07.14
✎
14:15
|
(30)+ хотя почему не катит.. катит
|
|||
33
anaed
17.07.14
✎
14:16
|
Фильтруй номенклатуру через параметр в выборке по продажам, а не отбором по итоговой выборке.
|
|||
34
Fram
17.07.14
✎
14:17
|
(32)+ загнался совсем.. все таки в пользовательском режиме построителя и СКД не катит ))
|
|||
35
France
17.07.14
✎
14:19
|
(34) давай, тебе тоже пора определяться))..
|
|||
36
AlexITGround
17.07.14
✎
14:23
|
(31) читаем внимательно "ОБЪЕДИНИТЬ ВСЕ"
|
|||
37
AlexITGround
17.07.14
✎
14:24
|
+ 36 левым соединением избегаем дублей
кстати, я не заметил где ограничение по номенклатуре в запросе из 27 |
|||
38
AlexITGround
17.07.14
✎
14:26
|
(33) соглашусь с человеком, только вот в упор не вижу ограничения в запросе
|
|||
39
France
17.07.14
✎
14:27
|
(36) это ничего не меняет.. я тоже вначале читал "ОБЪЕДИНИТЬ ВСЕ"..
первая часть запроса вернет всех, у кого были продажи.. вторая часть просто всех контрагентов. и, самый верхний уровень выборки свернет все аккуратненько. Сработает как левосоединение.. (37) без "Или НУЛЛ" и 27 не взлетит, если ставить в Где.. |
|||
40
catena
17.07.14
✎
14:27
|
Как вариант (если уж так хочется при любом фильтре все равно видеть всех контрагентов без продаж) - отдельно собирать продажи с отборами построителя, отдельно собирать контрагентов без продаж, потом объединять и в результирующем объединении дать для построителя другой псевдоним Номенклатуре, чтоб не накладывал туда свой отбор.
|
|||
41
AlexITGround
17.07.14
✎
14:30
|
(39) как свернет аккуратненько, если в одной СправочникСсылка.Номенклатура, а во второй NULL?
|
|||
42
Fram
17.07.14
✎
15:17
|
(41) Это не помешает запросу сгруппировать по этому полю
|
|||
43
Starik113
17.07.14
✎
15:25
|
40 Прав
|
|||
44
France
17.07.14
✎
15:30
|
(41) будет лишняя пустая запись Контрагента с номенклатура нулл по контрагентам с ненулевыми продажами. остальные данные совпадут.. на итоговый суммовой результат это не повлияет.
|
|||
45
AlexITGround
17.07.14
✎
15:47
|
(42) естественно не помешает
(44) и уже результаты будут разные |
|||
46
Fram
17.07.14
✎
15:48
|
(45) почему разные?
|
|||
47
France
17.07.14
✎
15:48
|
(45) данные по продажам будут одинаковые..
|
|||
48
Fram
17.07.14
✎
15:50
|
(47) да все будет одинаковое, исключая ИТОГИ
|
|||
49
AlexITGround
17.07.14
✎
15:54
|
сорри, ребят, конечно же :)
|
|||
50
Fram
17.07.14
✎
15:54
|
(48) Разве что, если в продажах есть пустой контрагент, то он в случае (16) не попадет в результат
|
|||
51
AlexITGround
17.07.14
✎
15:55
|
(50) какой контрагент?
|
|||
52
AlexITGround
17.07.14
✎
15:55
|
битая ссылка что ли...?
|
|||
53
France
17.07.14
✎
15:56
|
(48) я свои голословные заявления заранее проверил)) лишняя запись есть, но сейчас не очь хочется разбираться (52) зачем же только битая сслыка.. дорвался кто нибудь до корректировки записей регистра..
|
|||
54
Fram
17.07.14
✎
16:05
|
(53) откуда лишняя запись?
|
|||
55
France
17.07.14
✎
16:19
|
(54) допустим, что по контрагенту есть продажи. контрагент попал в итоговую выборку по регистру продаж, но при этом в объединении будет запись Контрагент с Номенклатурой НУЛЛ... онный и попадает.. Номенклатура и НУЛЛ не свернуться)
|
|||
56
AlexITGround
17.07.14
✎
16:28
|
(55) "Контрагент с Номенклатурой НУЛЛ"
т.е. как при объединении вдруг в обоих таблицах вырисуется NULL без к-л соединения? не понял, поясни плиз мысль свою |
|||
57
France
17.07.14
✎
16:33
|
(56)не в обоих.
в первой таблице будет "Контрагент\номенклатура\Кол-во" - это обороты регистра продаж во второй "Контрагент\НУЛЛ\0 - в любом случае. результат группировки записей по Контрагент\Номенклатура - 2 записи.. |
|||
58
AlexITGround
17.07.14
✎
16:42
|
(57) именно об этом я и думал, когда вел разговор, но в обоих запросах и в (0) и в (16) результат будет один и тот же, в конце свернется все. Аль не так?
|
|||
59
France
17.07.14
✎
16:45
|
(58) не свернулись у меня... не стал разбирать, но кажись (57)
|
|||
60
AlexITGround
17.07.14
✎
16:55
|
(59) у меня разница получилась аж в 2к записей, ну что ж буду смотреть, ради интереса...неужели я в 49 зря сдался :)
отпишусь |
|||
61
France
17.07.14
✎
16:56
|
(60) у тебя будут записи с пустым контрагентом, записи с группами контрагентов))
|
|||
62
France
17.07.14
✎
16:56
|
на группы глянь))
|
|||
63
AlexITGround
17.07.14
✎
16:59
|
(62) совершенно верно, необходимо добавлять условие на родителя
|
|||
64
France
17.07.14
✎
17:04
|
(63) после этого полностью совпали, или есть "лишьняя" запись??
|
|||
65
France
17.07.14
✎
17:05
|
лишьняя - блин, сол\фасол получилось..))
|
|||
66
Fram
17.07.14
✎
17:07
|
(55) понял уже.. посыпаю голову пеплом ))
|
|||
67
Fram
17.07.14
✎
17:09
|
(60) надо учится отстаивать свою точку зрения )) особенно, когда ты прав
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |