|
Выборка остатков товаров, которых нет в заказе поставщику | ☑ | ||
---|---|---|---|---|
0
Deryni
26.05.15
✎
17:58
|
Есть заказ поставщику. В нём есть Товар и его цвет.
Нужно выбрать то, что есть в самом заказе + такой же товар, но другого цвета, который есть на остатке, но нет именно в этом заказе. Выбрать в запросе. Заказов в запросе может быть несколько. |
|||
1
Maniac
26.05.15
✎
18:04
|
Обычный запрос по товару без условия по характеристике
|
|||
2
Deryni
26.05.15
✎
18:21
|
(1) Не получится. Мне нужно вывести товары с цветами.
Т.е. Товар - Цвет - Заказ - Остаток |
|||
3
Deryni
26.05.15
✎
18:22
|
Просто дополнить то, что уже есть в заказе теми цветами, которых в заказе нет, но на остатке есть.
|
|||
4
Maniac
26.05.15
✎
18:24
|
ну выводи, кто мешает
|
|||
5
Deryni
26.05.15
✎
18:26
|
(4) Вот я и спрашиваю, как это сделать.
|
|||
6
Deryni
26.05.15
✎
18:29
|
Да, я забыл сказать, что нужно группировка по заказам.
Т.е. отчёт выглядит примерно так: Заказ 1 Товар 1; цвет 1; 10; 15 Товар 1; цвет 2; 10; 0 Товар 1; цвет 3; 0; 10 |
|||
7
Maniac
26.05.15
✎
18:34
|
Типа такого?
http://subsystems.ru/upload/iblock/324/tab_20.png Активные заказы - внизу по каждому анализ, плюс наличие. |
|||
8
Deryni
26.05.15
✎
18:39
|
(7) Тут, как я понимаю показывает только то, что есть в выбранном вверху заказе.
А мне нужно то, что в заказе, вне зависимости от того, есть ли оно на остатке + то, те товары, которые в заказе есть, но в самом заказе нет цветов. Например есть товар iPhone. Он может быть Белый, Черный или Красный. В заказе у меня только Чёрный, но на остатке есть и Белый и Красный. Хочу по этому заказу показать, что Чёрных заказано 10, на остатке столько то, По этому же заказу показываю Крансый и Белый, но количество заказано = 0, а остаток тот, который есть. А в другом заказе может быть наоборот. И этих заказов у меня может быть 10 и всё нужно в одном отчёте. |
|||
9
Maniac
26.05.15
✎
18:40
|
цвета = характеристики.
делаешь запрос по остаткам по товару - выйдут все характеристики что есть на остатках. |
|||
10
Deryni
26.05.15
✎
18:43
|
У меня цвета - это цвета но это не важно.
Запрос по остаткам я сделал. Но я иду от заказа, а не от остатков. Остатки - вспомогательный. |
|||
11
Maniac
26.05.15
✎
18:44
|
У меня есть обработка подбора - справочник номенклатуры - где выводится вся информация что может быть нужна при работе с товарами при продаже.
http://subsystems.ru/upload/iblock/f5e/rmm_prodaz_1.png Там есть закладки все - остатки, заказы, резервы, все в детализациях полных. Все что нужно набрать в поиске товар и все выйдет. |
|||
12
Maniac
26.05.15
✎
18:45
|
(10) ну два запроса.
По заказам а к нему левым соединением только по товару запрос по остаткам всего товара без соединения по характеристике |
|||
13
Maniac
26.05.15
✎
18:45
|
вернее один запрос.
заказы, и левым соединением остатки |
|||
14
Deryni
26.05.15
✎
18:46
|
У меня стойкое ощущение, что ты не понимаешь, чего я хочу.
Ещё раз перечитай № 8, то, что у тебя в обработке мне вообще не подходит. Я и могу сделать то, что мне нужно выполнив два запроса, один по остаткам, второй по заказам, а потом идти по заказам и добавлять нужные мне товары в цикле. Но я хочу сделать всё в одном запросе. |
|||
15
Maniac
26.05.15
✎
18:46
|
Ну или по римеру (7) можно тоже элементарно вывести остатки товара по другим характеристикам.
делов на пять минут. |
|||
16
DexterMorgan
26.05.15
✎
18:47
|
(11) это че 10.3?
|
|||
17
Maniac
26.05.15
✎
18:47
|
(14) еще раз. один запрос.
Заказы - к нему левое соединение по остаткам с условием соединения только по номенклатуре. Без характеристики. Тогда выйдет отчет - все заказы - товары и товары которые есть на остатках но с другими характеристиками |
|||
18
Maniac
26.05.15
✎
18:48
|
да пофиг че. и ут10 и ут11 все делается и у меня есть и там и там.
|
|||
19
DexterMorgan
26.05.15
✎
18:49
|
(18) Ты свою обработку подбора в ут11 на базе свыше 100ГБ и 200к номенклатуры открывал?
|
|||
20
Maniac
26.05.15
✎
18:49
|
(19) размер базы пофигу. открывал на 500к в автозапчастях.
И странный вопрос - типовой же открывается. а мой еще быстрее типового. |
|||
21
Deryni
26.05.15
✎
18:50
|
Так?
ВЫБРАТЬ ВТЗаказы.Номенклатура КАК Номенклатура, ВТЗаказы.Цвет КАК ЦветЗ, ВТОстатки.Цвет КАК Цвет, ВТЗаказы.ЗаказПоставщику ИЗ ВТЗаказы ЛЕВОЕ СОЕДИНЕНИЕ ВТОстатки ПО ВТЗаказы.Номенклатура = ВТОстатки.Номенклатура |
|||
22
Maniac
26.05.15
✎
18:50
|
Там вся информация - выборка происходит при активации строки с товаром и нужной закладки.
А по умолчанию все основные (первые закладки) не делают запросов. Поэтому там все быстро |
|||
23
DexterMorgan
26.05.15
✎
18:51
|
(20) чиво, чиво? Это где у тебя 100500 объединений с вложенными запросами в дин списке быстрее?
|
|||
24
Maniac
26.05.15
✎
18:52
|
(21) да
|
|||
25
Maniac
26.05.15
✎
18:53
|
(23) ты путаешь. разработки.
подбор номенклатуры у меня запрос - легче типового. там никаких 100500 соединений нет |
|||
26
DexterMorgan
26.05.15
✎
18:54
|
(22) выборка происходит при активации строки с товаром и нужной закладки
Ааа, ну тада ясно. |
|||
27
Deryni
26.05.15
✎
18:54
|
(24) не работает
Выводит таблицу, где скажем для цвета белый из заказа повторяются все возможные цвета из остатков. При этом эти же цвета есть и в заказе. |
|||
28
Maniac
26.05.15
✎
18:54
|
в моем подборе есть основной динамический список, где все просто.
а дополнительные инфо выходят запросами при активации нужной строки и при условии активации определенной закладки. то есть 1) имеем основной список - где все просто 2) все доп расшифровки = отдельные мини запросы при определенных действиях с интерфейсом. |
|||
29
Deryni
26.05.15
✎
18:54
|
Работает только если в заказе товар встречается один раз
|
|||
30
Deryni
26.05.15
✎
18:56
|
А не, даже в этом случае не работает
|
|||
31
Maniac
26.05.15
✎
18:58
|
Все должно работать.
|
|||
32
Deryni
26.05.15
✎
19:03
|
Но не работает :)
Проблема вот в чём. Простое левое соединение таблицы заказов и таблицы остатков только по номенклатуре даст мне результирующую таблицу, где для каждой строки из заказа будут все строки этой же номенклатуры из остатков. Так? Но мне нужны не все, а только те, которых в этом заказе вообще нет. Смотри. Предположим у меня в заказе 2 цвета Красный и Белый. На остатке есть все три: Красный, Белый, Чёрный. Что я получу на выходе простым соединением: Красный - Красный Красный - Белый Красный - Черный Белый - Красный Белый - Белый Белый - Черный А мне нужно так: Красный - Красный Белый - Белый Черный - нет такого цвета в заказе |
|||
33
Maniac
26.05.15
✎
19:04
|
ПО ВТЗаказы.Цвет <> = ВТОстатки.Цвет
|
|||
34
Maniac
26.05.15
✎
19:04
|
ПО ВТЗаказы.Цвет <> ВТОстатки.Цвет
|
|||
35
Maniac
26.05.15
✎
19:06
|
сделай запросом через ОБЪЕДЕНИТЬ
но в запросе по остаткам в фильтр поставить условие не выгребать характеристики которые есть в заказе |
|||
36
Maniac
26.05.15
✎
19:08
|
не (35) не нужно.
достаточно (34) в соединение добавить чтобы не выходили остатки цветов которые есть в заказе. тоесть условие неравенства |
|||
37
Deryni
26.05.15
✎
22:52
|
Пробовал я и через неравенство. Не работает. Потому, что он тогда для каждого цвета из заказа берёт всё из остатков с другим цветом. А мне опять же всё не нужно.
|
|||
38
Maniac
26.05.15
✎
23:07
|
Я понял что тебе нужно.
ОБЪЕДИНИТЬ ВСЕ |
|||
39
Maniac
26.05.15
✎
23:08
|
тогда у тебя будет ровная таблица как тебе нужно.
Единственное что в запрос по остаткам нуждно будет сделать условие какие товары выгребать. |
|||
40
Maniac
26.05.15
✎
23:09
|
ну в принципе
1) запрос по заказам ОБЪЕДИНИТЬ ВСЕ 2) запрос по остаткам но в нем условие брать товары которые есть в заказах поставщикам |
|||
41
Maniac
26.05.15
✎
23:09
|
тогда будет четкая таблица
|
|||
42
Maniac
26.05.15
✎
23:10
|
то есть не нужно будет два раза иметь переменную с цветом
|
|||
43
Maniac
26.05.15
✎
23:15
|
Стартмани, в самом слове звучит Старт Мани.
|
|||
44
Maniac
26.05.15
✎
23:16
|
опс не туда
|
|||
45
Deryni
26.05.15
✎
23:16
|
Вот так получилось:
ВЫБРАТЬ РАЗЛИЧНЫЕ ОЗ.НоменклатураО, ОЗ.ЦветО, ОЗ.ЗаказПоставщику, ОЗ.Остаток ИЗ ( ВЫБРАТЬ РАЗЛИЧНЫЕ ВТЗаказы.Номенклатура КАК Номенклатура, ВТЗаказы.Цвет КАК ЦветЗ, ВТЗаказы.ЗаказПоставщику КАК ЗаказПоставщику, Остатки.Номенклатура КАК НоменклатураО, Остатки.Цвет КАК ЦветО, Остатки.Остаток ИЗ ВТЗаказы, ВТОстаткиБезСклада Остатки ГДЕ ВТЗаказы.Номенклатура = Остатки.Номенклатура И ВТЗаказы.Цвет <> Остатки.Цвет ) ОЗ ЛЕВОЕ СОЕДИНЕНИЕ ВТЗаказы ПО ВТЗаказы.Номенклатура = ОЗ.НоменклатураО И ВТЗаказы.Цвет = ОЗ.ЦветО И ВТЗаказы.ЗаказПоставщику = ОЗ.ЗаказПоставщику ГДЕ ВТЗаказы.ЗаказПоставщику ЕСТЬ NULL |
|||
46
Deryni
26.05.15
✎
23:18
|
Т.е. вначале делаем полное пересечение таблиц, получаем все возможные сочетания цветов и номенклатуры с заказами. Потом снова соединяем с заказами и всё, что взято из остатков и где соединение с заказом поставщику даёт NULL.
|
|||
47
ЧеловекДуши
27.05.15
✎
06:40
|
(0) Потрудитесь пояснить теперь, как у вас ведется разделения товара по цветовой дифференциации?
|
|||
48
ЧеловекДуши
27.05.15
✎
06:42
|
(45) Ужас. Делай через Временные таблицы.
И ... как долго будет выполняться запрос при полном пересечении?... |
|||
49
Deryni
27.05.15
✎
10:31
|
(47) а какая разница как он ведётся? В данном случае у меня это отдельный справочник. Но можно и через характеристики.
(48) не знаю на полной записи ещё не тестировал. Но других вариантов я всё равно не нашёл. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |