|
Вопрос по запросу.Выборка скидки по приориту для товара и для товара.родитель | ☑ | ||
---|---|---|---|---|
0
serg-lom89
12.05.16
✎
09:53
|
добрый день!
Есть запросик ВЫБРАТЬ Номенклатура.Ссылка КАК Номенклатура ПОМЕСТИТЬ Номра ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.Ссылка = &Ном ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ СкидкиНаценкиНоменклатурыСрезПоследних.Номенклатура, СкидкиНаценкиНоменклатурыСрезПоследних.ПроцентСкидкиНаценки ПОМЕСТИТЬ СкидкиПоНомре ИЗ РегистрСведений.СкидкиНаценкиНоменклатуры.СрезПоследних( &D, ПолучательСкидки.Владелец = &Kontr ИЛИ ПолучательСкидки.Ссылка = &Kontr) КАК СкидкиНаценкиНоменклатурыСрезПоследних ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Номра.Номенклатура КАК Номенклатура1, СкидкиПоНомре.Номенклатура, СкидкиПоНомре.ПроцентСкидкиНаценки ИЗ Номра КАК Номра ЛЕВОЕ СОЕДИНЕНИЕ СкидкиПоНомре КАК СкидкиПоНомре ПО (ВЫБОР КОГДА Номра.Номенклатура = СкидкиПоНомре.Номенклатура ТОГДА Номра.Номенклатура = СкидкиПоНомре.Номенклатура КОГДА Номра.Номенклатура.Родитель = СкидкиПоНомре.Номенклатура ТОГДА Номра.Номенклатура.Родитель = СкидкиПоНомре.Номенклатура КОГДА Номра.Номенклатура.Родитель.Родитель = СкидкиПоНомре.Номенклатура ТОГДА Номра.Номенклатура.Родитель.Родитель = СкидкиПоНомре.Номенклатура КОГДА Номра.Номенклатура.Родитель.Родитель.Родитель = СкидкиПоНомре.Номенклатура ТОГДА Номра.Номенклатура.Родитель.Родитель.Родитель = СкидкиПоНомре.Номенклатура КОГДА Номра.Номенклатура.Родитель.Родитель.Родитель.Родитель = СкидкиПоНомре.Номенклатура ТОГДА Номра.Номенклатура.Родитель.Родитель.Родитель.Родитель = СкидкиПоНомре.Номенклатура КОГДА Номра.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель = СкидкиПоНомре.Номенклатура ТОГДА Номра.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель = СкидкиПоНомре.Номенклатура КОГДА Номра.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = СкидкиПоНомре.Номенклатура ТОГДА Номра.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = СкидкиПоНомре.Номенклатура КОГДА Номра.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = СкидкиПоНомре.Номенклатура ТОГДА Номра.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = СкидкиПоНомре.Номенклатура КОГДА Номра.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = СкидкиПоНомре.Номенклатура ТОГДА Номра.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = СкидкиПоНомре.Номенклатура КОГДА Номра.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = СкидкиПоНомре.Номенклатура ТОГДА Номра.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = СкидкиПоНомре.Номенклатура КОГДА Номра.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = СкидкиПоНомре.Номенклатура ТОГДА Номра.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = СкидкиПоНомре.Номенклатура КОГДА Номра.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = СкидкиПоНомре.Номенклатура ТОГДА Номра.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = СкидкиПоНомре.Номенклатура КОНЕЦ) Данным запросом выбираю из справочника Номра один элемент. Вторая таблица эта скидка по ном-ре для покупателя. затем к первой таблице присоединяю вторую таблицу. и получается что скидка для этой номеры установлена ,но еще установлена и для иерархии в которой находиться эта ном-ра. например скидка на товар Масло крест. 22 проц,а на продукты в иерархии "мол. прод." 25 и естестенно 2 записи получаю. Но фактически я должен взять скидку на сам только товар(приоритет у самого товара больше)Подскажите как реализовать данный момент в запросе? |
|||
1
serg-lom89
12.05.16
✎
09:54
|
предскажите как правильно тогда составить запрос
|
|||
2
serg-lom89
12.05.16
✎
10:15
|
апну тему
|
|||
3
drcrasher
12.05.16
✎
10:17
|
а просто номенклатуру иерархией выбрать не судьба? и соединить со скидками
|
|||
4
aleks_default
12.05.16
✎
10:18
|
(1) правильно не запросом, а рекурсивной функцией
|
|||
5
Nuobu
12.05.16
✎
10:26
|
ВЫБОР
КОГДА Номра.Номенклатура = СкидкиПоНомре.Номенклатура ТОГДА Номра.Номенклатура = СкидкиПоНомре.Номенклатура КОГДА Номра.Номенклатура.Родитель = СкидкиПоНомре.Номенклатура ТОГДА Номра.Номенклатура.Родитель = СкидкиПоНомре.Номенклатура КОГДА Номра.Номенклатура.Родитель.Родитель = СкидкиПоНомре.Номенклатура ТОГДА Номра.Номенклатура.Родитель.Родитель = СкидкиПоНомре.Номенклатура КОГДА Номра.Номенклатура.Родитель.Родитель.Родитель = СкидкиПоНомре.Номенклатура ТОГДА Номра.Номенклатура.Родитель.Родитель.Родитель = СкидкиПоНомре.Номенклатура КОГДА Номра.Номенклатура.Родитель.Родитель.Родитель.Родитель = СкидкиПоНомре.Номенклатура ТОГДА Номра.Номенклатура.Родитель.Родитель.Родитель.Родитель = СкидкиПоНомре.Номенклатура КОГДА Номра.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель = СкидкиПоНомре.Номенклатура ТОГДА Номра.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель = СкидкиПоНомре.Номенклатура КОГДА Номра.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = СкидкиПоНомре.Номенклатура ТОГДА Номра.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = СкидкиПоНомре.Номенклатура КОГДА Номра.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = СкидкиПоНомре.Номенклатура ТОГДА Номра.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = СкидкиПоНомре.Номенклатура КОГДА Номра.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = СкидкиПоНомре.Номенклатура ТОГДА Номра.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = СкидкиПоНомре.Номенклатура КОГДА Номра.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = СкидкиПоНомре.Номенклатура ТОГДА Номра.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = СкидкиПоНомре.Номенклатура КОГДА Номра.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = СкидкиПоНомре.Номенклатура ТОГДА Номра.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = СкидкиПоНомре.Номенклатура КОГДА Номра.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = СкидкиПоНомре.Номенклатура ТОГДА Номра.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = СкидкиПоНомре.Номенклатура КОНЕЦ КАК ПолеПриоритет |
|||
6
serg-lom89
12.05.16
✎
10:28
|
(4) да.такой вариант я сразу и рассматривал ..вот только если брать большую выборку ном-ры тогда на производительности
|
|||
7
serg-lom89
12.05.16
✎
10:28
|
скажется
|
|||
8
sash-ml
12.05.16
✎
10:40
|
(0) помести в ТЗ из трех колонок(номенклатура, родитель, приоритет) (номенклатура, номенклатура и все ее родители, длину строки полного кода родителя) передай параметром в запрос.
соединяй внутренним соединением со срезом последних скидок по родителю, упорядочи по убыванию приоритета. сгруппируй по максимальному приоритету. и т.д. |
|||
9
aleks_default
12.05.16
✎
10:41
|
Дык ты определись тебе по одной позиции надо найти скидку или по списку позиций? А то ведь это существенная разница для определения механизма реализации.
|
|||
10
serg-lom89
12.05.16
✎
10:44
|
(9) в идеале надо для списка ном-ры
|
|||
11
sash-ml
12.05.16
✎
10:45
|
(11) а типовую функцию использовать религия не позволяет?
|
|||
12
serg-lom89
12.05.16
✎
10:49
|
(11) ?
|
|||
13
serg-lom89
12.05.16
✎
11:10
|
вопрос у меня еще по условию соединения .
Получается в том что для одного оно выводит скидку именно на самму ном-ру а вторую строку для 2 родителя.разве не должно отработать только для ном-ры? |
|||
14
sash-ml
12.05.16
✎
11:19
|
(13) судя по твоему запросу не должно, (12) ОбработкаТабличныхЧастей.ПолучитьСкидки() или как то так.
Конфа то какая? |
|||
15
serg-lom89
12.05.16
✎
11:24
|
торговля (14)
|
|||
16
kittystark
12.05.16
✎
23:48
|
(13) во-первых твои условия связи - слегка тавтология
ВЫБОР КОГДА Номра.Номенклатура = СкидкиПоНомре.Номенклатура ТОГДА Номра.Номенклатура = СкидкиПоНомре.Номенклатура КОГДА Номра.Номенклатура.Родитель = СкидкиПоНомре.Номенклатура ТОГДА Номра.Номенклатура.Родитель = СкидкиПоНомре.Номенклатура .... по сути есть логическое выражение Номра.Номенклатура = СкидкиПоНомре.Номенклатура ИЛИ Номра.Номенклатура.Родитель = СкидкиПоНомре.Номенклатура .... что производительнее на больших объемах - еще вопрос, ожидаемого "обрыва" на первой ветке "выбор-когда-тогда" не произойдет, т.к. условие проверяется для каждой записи отдельно во-вторых у тебя возможна ситуация когда на сам товар скидка не назначена, но назначена на родителе-родителя-родителя (тремя уровнями иерархии выше) если хочешь брать только ближаюйшую и не обращать внимание на более выше стоящие, то как вариант можно добавить свое поле "РазностьУровней" и по нему потом брать только записи соответствующие минимуму по этому полю |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |