|
Запрос по характеристикам | ☑ | ||
---|---|---|---|---|
0
dmino
21.08.12
✎
17:49
|
Доброго времени суток! Помогите с запросом. Смысл запроса - Выбрать все товары по заданным параметрам характеристик, характеристик может быть несколько
ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ ЗначенияСвойствОбъектов.Объект.Владелец КАК Ссылка ИЗ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов1 ПО ЗначенияСвойствОбъектов.Объект = ЗначенияСвойствОбъектов1.Объект ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов2 ПО ЗначенияСвойствОбъектов.Объект = ЗначенияСвойствОбъектов2.Объект ГДЕ 1 = 1 И ЗначенияСвойствОбъектов.Свойство = &Свойство И ЗначенияСвойствОбъектов.Значение = &Значение И ЗначенияСвойствОбъектов1.Свойство = &Свойство2 И ЗначенияСвойствОбъектов1.Значение = &Значение2 И ЗначенияСвойствОбъектов2.Свойство = &Свойство3 И ЗначенияСвойствОбъектов2.Значение = &Значение3 Работает корректно, но как-то криво написано :) подскажите направление в котором подумать? |
|||
1
dmino
21.08.12
✎
17:50
|
А наверное уже понял) несколько запросов собирать левым соединением по объекту?
|
|||
2
SUA
21.08.12
✎
17:50
|
1=1 удалить =)
и можно внутреннее соединение |
|||
3
dmino
21.08.12
✎
17:52
|
(2) внутреннее быстрее работать будет?
PS: 1 = 1 сделано на случай если ни одну характеристику не выбрали. в оригинале выглядит примерно так: Для Каждого Строка Из Характеристики Цикл Условие = Условие + " И ЗначенияСвойствОбъектов.Свойство = &Свойство"+Строка(Строка.НомерСтроки)+" И ЗначенияСвойствОбъектов.Значение = &Значение"+Строка(Строка.НомерСтроки); Выборка = Выборка + " ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов" + Строка(Строка.НомерСтроки) + " ПО ЗначенияСвойствОбъектов.Объект = ЗначенияСвойствОбъектов" + Строка(Строка.НомерСтроки) + ".Объект "; Запрос.УстановитьПараметр("Свойство"+Строка(Строка.НомерСтроки), Строка.ИмяХаракетристика); Запрос.УстановитьПараметр("Значение"+Строка(Строка.НомерСтроки), Строка.Значение); КонецЦикла; Запрос.Текст ="ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ | ЗначенияСвойствОбъектов.Объект.Владелец КАК Ссылка |ИЗ | РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов | " + Выборка + " |ГДЕ | 1 = 1 " + Условие; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |