|
Условие в запросе - найти объект в котором все значения табл части равны массиву | ☑ | ||
---|---|---|---|---|
0
Maniac
05.06.12
✎
13:59
|
Чой то голову сломал. Впервые такой момент вылазит.
Справочник характеристик. нужно найти характеристику со свойствами из массива. Есть массив значений реквизитов. Нужно найти точный элемент в котором все значения в табличной части входят в массив. Условие В - не помогает. Находит первый попавшийся элемент в котором первое значение есть в массиве. поочередное условие с И тоже не помогает.. Вот как делал: 1) Запрос.Текст = Запрос.Текст + " И ЗначенияСвойствОбъектов.Свойство = &СвойствоХарактеристики"+Строка(НомСвойства); Запрос.Текст = Запрос.Текст + " И ЗначенияСвойствОбъектов.Значение = &УстановитьСвойство"+Строка(НомСвойства); Запрос.УстановитьПараметр("СвойствоХарактеристики"+Строка(НомСвойства), СвойствоХарактеристики); Запрос.УстановитьПараметр("УстановитьСвойство"+Строка(НомСвойства), УстановитьСвойство); 2) //Запрос.Текст = Запрос.Текст + " И ЗначенияСвойствОбъектов.Свойство В (&МассивСвойств)"; //Запрос.Текст = Запрос.Текст + " И ЗначенияСвойствОбъектов.Значение В (&МассивЗначенийСвойств)"; // //Запрос.УстановитьПараметр("МассивСвойств", МассивСвойств); //Запрос.УстановитьПараметр("МассивЗначенийСвойств", МассивЗначенийСвойств); Оба не работают. |
|||
1
Maniac
05.06.12
✎
14:01
|
свойства характеристик это табличная часть доп реквизитов.
например имеем Белый и Широкий (в характеристике) У нас есть массив значений, в котором Белый, Широкий. В запросе нужно чтобы все значения характеристик совпадали с переданным массивом (параметром запроса). Получается что никак не выходит. Сразу оговорюсь - задача решить запросом. а не перебором. |
|||
2
Нуф-Нуф
05.06.12
✎
14:04
|
я нифига не понял...
|
|||
3
Maniac
05.06.12
✎
14:06
|
(2)
ну например еу тебя есть доки в базе. У тебя есть заранее известный массив. например три номенклатуры. Тебе нужно найти док в котором есть эти три товара, не больше и не меньше - а именно эти три. |
|||
4
alkov
05.06.12
✎
14:06
|
А нельзя массив предварительно преобразовать в колонку ТЗ, которую и передать в запрос, а в нём уже соединение с этой ТЗ?
|
|||
5
Maxus43
05.06.12
✎
14:06
|
есть мысль
|
|||
6
Maniac
05.06.12
✎
14:07
|
+(3) и только эти три.
|
|||
7
МихаилМ
05.06.12
✎
14:18
|
выбирите уникальные
соедините с набором условий посчитайте кол-во совпадений (соединений). где равно заданному кол-ву |
|||
8
Maniac
05.06.12
✎
14:23
|
Да видимо надо захонять ТЗ в запрос. соединять внутренним соединением. Делать это вложенным запросом, а на верхнем уровне еще ставить условие что если где то значение пусто то и результата запроса не будет.
|
|||
9
МихаилМ
05.06.12
✎
14:28
|
+(7)
и учтите, что postgre крацне медленно отрабатывае DISTINCT те замените на group by |
|||
10
Senior-soft
05.06.12
✎
14:32
|
МАКСИМУМ(ВЫБОР
|
|||
11
Maniac
05.06.12
✎
14:41
|
(10) кажется оно! ВЫБОР делает внутренюю выборку.
|
|||
12
Maniac
05.06.12
✎
14:43
|
(10) но ты уверен что надо максимум?
если например второй элемент быдет ложь, а последний будет истиной даст истину? или не? |
|||
13
Senior-soft
05.06.12
✎
14:53
|
(12) да, МИНИМУМ
|
|||
14
Maniac
05.06.12
✎
15:00
|
Не болт
"ВЫБРАТЬ ПЕРВЫЕ 1 | ЗапросПоХарактеристикам.Номенклатура КАК Номенклатура, | ЗапросПоХарактеристикам.Характеристика КАК Характеристика |ИЗ | (ВЫБРАТЬ | ЗначенияСвойствОбъектов.Ссылка.Владелец КАК Номенклатура, | ЗначенияСвойствОбъектов.Ссылка КАК Характеристика, | МИНИМУМ(ВЫБОР | КОГДА ЗначенияСвойствОбъектов.Значение В (&МассивСвойств) | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ) КАК ЕстьВсеУказанныеХарактеристики | ИЗ | Справочник.ХарактеристикиНоменклатуры.ДополнительныеРеквизиты КАК ЗначенияСвойствОбъектов | ГДЕ | ЗначенияСвойствОбъектов.Ссылка.Владелец = &Номенклатура | | СГРУППИРОВАТЬ ПО | ЗначенияСвойствОбъектов.Ссылка.Владелец, | ЗначенияСвойствОбъектов.Ссылка) КАК ЗапросПоХарактеристикам |ГДЕ | ЗапросПоХарактеристикам.ЕстьВсеУказанныеХарактеристики = ИСТИНА"; |
|||
15
Maniac
05.06.12
✎
15:05
|
Нет! Все работает! Я не тот массив передал.
|
|||
16
Maniac
05.06.12
✎
15:08
|
(13) Ты мозг! Спасибо!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |