|
Как более изящнее можно решить следующую задачу? | ☑ | ||
---|---|---|---|---|
0
Kaukass
19.02.15
✎
16:36
|
В результате ниже приведенного текста запроса, по каждой номенклатуре отображается по две повторяющихся строчки.
ВЫБРАТЬ ЦеныНоменклатурыСрезПоследних.Номенклатура, ЦеныНоменклатурыСрезПоследних.Цена ИЗ Документ.УстановкаЦенНоменклатуры.Товары КАК УстановкаЦенНоменклатурыТовары ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ) КАК ЦеныНоменклатурыСрезПоследних ПО (УстановкаЦенНоменклатурыТовары.Номенклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура.Ссылка) ГДЕ ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен И УстановкаЦенНоменклатурыТовары.Ссылка = &Ссылка Подтесал это дело топором - сгруппировал: ВЫБРАТЬ ЦеныНоменклатурыСрезПоследних.Номенклатура, МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.Цена) КАК Цена ИЗ Документ.УстановкаЦенНоменклатуры.Товары КАК УстановкаЦенНоменклатурыТовары ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ) КАК ЦеныНоменклатурыСрезПоследних ПО (УстановкаЦенНоменклатурыТовары.Номенклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура.Ссылка) ГДЕ ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен И УстановкаЦенНоменклатурыТовары.Ссылка = &Ссылка СГРУППИРОВАТЬ ПО ЦеныНоменклатурыСрезПоследних.Номенклатура Что так с первым запросом, почему по две повтряющихся строчки отображает? |
|||
1
Ёпрст
19.02.15
✎
16:37
|
где поменять на И, это для начала
|
|||
2
vhl
19.02.15
✎
16:37
|
в РегистрСведений.ЦеныНоменклатуры есть еще одно измерение
|
|||
3
Ёпрст
19.02.15
✎
16:38
|
условия из где запихать унутрь СрезПоследних
|
|||
4
D_E_S_131
19.02.15
✎
17:02
|
Если цель показать какие цены были установлены на номенклатуру конкретным документом "Установка цен", то можно обойтись и без "Среза последних". ИМХО это будет еще более изящным.
|
|||
5
Kaukass
19.02.15
✎
19:15
|
Благодарю.
|
|||
6
Kaukass
19.02.15
✎
19:16
|
Буду разбирать ваши советы
|
|||
7
Крошка Ру
19.02.15
✎
19:31
|
(0) 1. Такое условие к полю правой таблицы автоматически превращает соединение во ВНУТРЕННЕЕ.
2. Вытаскиваются поля только правой таблицы, а соединение левое. WTF?? 3. Условие "ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен" реально лучше запихнуть в параметры среза, рядом с периодом. 4. Если при левом соединении вытаскиваются поля правой таблицы, не надо забывать, что там может быть NULL, поэтому лучше использовать конструкцию ЕстьNULL(). 5. Задваиваются строки скорее всего из-за того, что соединяешь только по номенклатуре, а скорее всего есть ещё одно измерение.(кстати в условии соединения "Номенклатура.Ссылка" лучше заменить на "Номенклатура" 6. Last but not least. Начать надо с осознания - для чего же этот запрос нужен, а уже потом его писать(ну или переписывать) |
|||
8
Kaukass
19.02.15
✎
23:01
|
Действительно - "двоилось" из-за того, что забыл связать еще и по полю ТипЦен.
|
|||
9
MSOliver
19.02.15
✎
23:57
|
"ВЫБРАТЬ
| ЦеныНоменклатуры.Номенклатура, | ЦеныНоменклатуры.Цена |ИЗ | РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры |ГДЕ | ЦеныНоменклатуры.Регистратор = &Регистратор | И ЦеныНоменклатуры.ТипЦен = &ТипЦен" |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |