|
|
Как более изящнее можно решить следующую задачу? |
☑ |
|
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
|
"ВЫБРАТЬ
| ЦеныНоменклатуры.Номенклатура,
| ЦеныНоменклатуры.Цена
|ИЗ
| РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
|ГДЕ
| ЦеныНоменклатуры.Регистратор = &Регистратор
| И ЦеныНоменклатуры.ТипЦен = &ТипЦен"
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший