|
Помогите с запросом на выбор из нужной колонки! | ☑ | ||
---|---|---|---|---|
0
Zebbar
29.08.12
✎
10:10
|
Есть таблица. Назовем ее Аналоги. В ней колонки Номенклатура и Аналог.
Есть документ с табличной частью ЗаказНаПр-во, который содержит Номенклатура. Мне надо написать запрос, который проходит по табличной части документа ЗаказНаПр-во и возвращает Номенклатура, если его нет в колонке Аналог, либо, если Номенклатура содержится в колонке Аналог, то Номенклатура из таблицы Аналог То есть такой пример: Таблица Аналоги Номенклатура Аналог Слон Животное Слон Таракан Муха Комар Таблица Заказ Номенклатура Таракан Кит Муха Запрос должен вернуть Слон Кит Муха У меня получается запрос типа такого, но он не работает: ВЫБРАТЬ ЗаказНаПроизводствоПродукция.Номенклатура, ВЫБОР КОГДА Аналоги.Номенклатура ЕСТЬ NULL ТОГДА Аналоги.Аналог ИНАЧЕ Аналоги.Номенклатура КОНЕЦ КАК Номенклатура1 ИЗ Документ.ЗаказНаПроизводство.Продукция КАК ЗаказНаПроизводствоПродукция ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ябБазовыеПозиции.Номенклатура КАК Номенклатура, ябБазовыеПозиции.Аналог КАК Аналог ИЗ РегистрСведений.ябБазовыеПозиции КАК ябБазовыеПозиции ГДЕ ябБазовыеПозиции.ДляРецептуры = ИСТИНА) КАК Аналоги ПО ЗаказНаПроизводствоПродукция.Номенклатура = Аналоги.Аналог ГДЕ ЗаказНаПроизводствоПродукция.Ссылка = &ЗаказНаПроизводство |
|||
1
Zebbar
29.08.12
✎
10:12
|
Точнее оно не так, чтобы совсем не работает. Если это Аналог - то возвращается его основной товар. Если это не Аналог - то ничего не возвращается
|
|||
2
palpetrovich
29.08.12
✎
11:01
|
сумбур какой-то в сабже, попробуй изложить понятнее
|
|||
3
Reset
29.08.12
✎
11:12
|
То есть такой пример:
Таблица Аналоги Номенклатура Аналог Слон Животное Слон Таракан Муха Комар Таблица Заказ Номенклатура Таракан Кит Муха ==> Выбрать isNull(Аналоги.Номенклатура,Заказ.Номенклатура) как Номенклатура из ТаблицаЗаказ как Заказ левое соединение ТаблицаАналоги как Аналоги по Заказ.Номенклатура=Аналоги.Аналог |
|||
4
Reset
29.08.12
✎
11:14
|
тем не менее, с (2) согласен
|
|||
5
rutony
29.08.12
✎
11:19
|
(0)
ВЫБРАТЬ ЕСТЬNULL(Аналоги.Аналог, ЗаказНаПроизводствоПродукция.Номенклатура) КАК Номенклатура ИЗ Документ.ЗаказНаПроизводство.Продукция КАК ЗаказНаПроизводствоПродукция ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Аналоги КАК Аналоги ПО ЗаказНаПроизводствоПродукция.Номенклатура = Аналоги.Номенклатура |
|||
6
rutony
29.08.12
✎
11:20
|
(0) Почему номенклатуру ищешь в аналогах, а не в номенклатуре...
|
|||
7
Reset
29.08.12
✎
11:30
|
(5) Твой запрос решает задачу "Максимально заменить товар в заказе на аналоги", а автору, вероятно , нужно "Максимально избавиться от аналогов".
Хотя это домыслы |
|||
8
Reset
29.08.12
✎
11:38
|
+ к (3) версия в терминах (0)
ВЫБРАТЬ isNull(ябБазовыеПозиции.Номенклатура,ЗаказНаПроизводствоПродукция.Номенклатура) ИЗ Документ.ЗаказНаПроизводство.Продукция КАК ЗаказНаПроизводствоПродукция ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ябБазовыеПозиции КАК ябБазовыеПозиции ПО ябБазовыеПозиции.ДляРецептуры = ИСТИНА И ЗаказНаПроизводствоПродукция.Номенклатура = ябБазовыеПозиции.Аналог ГДЕ ЗаказНаПроизводствоПродукция.Ссылка = &ЗаказНаПроизводство |
|||
9
Reset
29.08.12
✎
11:38
|
хотя автор пропал куда-то, ладно
|
|||
10
Zebbar
30.08.12
✎
08:43
|
(7) Да, правильно
|
|||
11
Zebbar
30.08.12
✎
08:48
|
Вчера уже сделал. У меня ошибка здесь была:
ВЫБОР КОГДА Аналоги.Номенклатура ЕСТЬ NULL ТОГДА Аналоги.Аналог ИНАЧЕ Аналоги.Номенклатура КОНЕЦ КАК Номенклатура1 Должно быть так: ВЫБОР КОГДА Аналоги.Номенклатура ЕСТЬ NULL ТОГДА ДокЗаказ.Номенклатура ИНАЧЕ Аналоги.Номенклатура КОНЕЦ КАК Номенклатура, |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |