|
Дополнительные реквииты не могу придумать запрос | ☑ | ||
---|---|---|---|---|
0
НичегоНе Понятно
08.07.19
✎
18:15
|
Всем привет! Есть задача отобрать номенклатуру с определенными значениями дополнительных реквизитов. ДопРевизиы хранятся в ТЧ справочника номенклатура. Дополнительных реквизитов в районе 6штук. Но не могу придумать как построить условие вот такой запрос не работает по очевидным причинам:
ВЫБРАТЬ РАЗЛИЧНЫЕ
Нужно искать пары свойство - значение. Как это сделать красиво? |
|||
1
Кодер
08.07.19
✎
18:17
|
Где Имя = Зинка
И Имя = Танька |
|||
2
palsergeich
08.07.19
✎
18:17
|
Красиво не выйдет.
Будет 6 кондовых соединений по ссылке, и свойству |
|||
3
НичегоНе Понятно
08.07.19
✎
18:21
|
(1)Тогда он отберет и номенклатуру с допреквизитами:
Свойство = Значение Свойство1 = Значение1 //правильно и также Свойство = Значение1 Свойство1 = Значение //неправильно то есть просто проверит, что в тч есть такие свойства, ну и значениия тоже есть, а где они стоят, не так уж важно |
|||
4
НичегоНе Понятно
08.07.19
✎
18:23
|
(2)Давайте попробуем некрасиво. Какие нужны соединения и где?
|
|||
5
VladZ
08.07.19
✎
18:26
|
ВЫБРАТЬ РАЗЛИЧНЫЕ
НоменклатураДополнительныеРеквизиты.Ссылка КАК Ссылка ИЗ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты ГДЕ НоменклатураДополнительныеРеквизиты.Свойство = &Свойство1 И НоменклатураДополнительныеРеквизиты.Значение = &Значение1 объединить ВЫБРАТЬ РАЗЛИЧНЫЕ НоменклатураДополнительныеРеквизиты.Ссылка КАК Ссылка ИЗ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты ГДЕ НоменклатураДополнительныеРеквизиты.Свойство = &Свойство2 И НоменклатураДополнительныеРеквизиты.Значение = &Значение2 и т.д. |
|||
6
SleepyHead
гуру
08.07.19
✎
18:33
|
Есть методы БСП для чтения доп реквизитов. Пишу с телефона, подробнее не могу, используй как подсказку.
|
|||
7
НичегоНе Понятно
08.07.19
✎
18:34
|
(5)В резульутат запроса попадут те ссылки у которых есть только Свойство1 = Значение1 а надо и Свойство2 = Значение2. Так же в результат запроса могут попасть ссылки у которых Свойство1 = Значение2. Если оба свойства есть у ссылки.
|
|||
8
SleepyHead
гуру
08.07.19
✎
18:35
|
(7) нифига, прочитай запрос повнимательнее
|
|||
9
НичегоНе Понятно
08.07.19
✎
18:38
|
(7)Читать как "а надо Свойство1 = Значение1 и Свойство2 = Значение2 одновременно"
|
|||
10
НичегоНе Понятно
08.07.19
✎
18:39
|
(8) Невнятно выразился сорян, см (9)
|
|||
11
Вафель
08.07.19
✎
18:44
|
под каждое свойство нужно ОТДЕЛЬНОЕ соединение
|
|||
12
singlych
08.07.19
✎
18:46
|
выбрать где Свойство1 и Значение1;
выбрать где Свойство2 и Значение2; соединить внутренне |
|||
13
НичегоНе Понятно
08.07.19
✎
18:49
|
(12)Попадется ему номенклатура где
Свойство1 = Значение1 Свойство2 = Значение1 Свойство3 = Значение2 И эта ссылка попадет в результат запроса? |
|||
14
НичегоНе Понятно
08.07.19
✎
18:50
|
(13)Очень маловероятно конечно, но возможно
|
|||
15
Сияющий в темноте
08.07.19
✎
19:11
|
А в чем проблема выбрать в отдельную таблицу,где поля РеквизитСсылка и Значение из одной табличной части,ничего не соединяя,а потом из этой таблицы выбрать.
|
|||
16
НичегоНе Понятно
08.07.19
✎
19:13
|
||||
17
singlych
09.07.19
✎
19:01
|
(13) отвалится по условию "где Свойство2 и Значение2"
|
|||
18
maxkras26
10.07.19
✎
05:30
|
А так свойство=&Свойство1 и Значение=&Значение1 или свойство=&Свойство2 и Значение=&Значение2 или.....
|
|||
19
maxkras26
10.07.19
✎
05:32
|
НУ если твой запрос
ГДЕ НоменклатураДополнительныеРеквизиты.Свойство = &Свойство И НоменклатураДополнительныеРеквизиты.Значение = &Значение ИЛИ НоменклатураДополнительныеРеквизиты.Свойство = &Свойство1 И НоменклатураДополнительныеРеквизиты.Значение = &Значение1 ИЛИ НоменклатураДополнительныеРеквизиты.Свойство = &Свойство2 И ..... |
|||
20
seevkik
10.07.19
✎
05:35
|
(19) Читай внимательно (9)
|
|||
21
seevkik
10.07.19
✎
05:37
|
Не пытайся выдумать сильно сложное - отбери сначала по первому условию, потом по второму
|
|||
22
seevkik
10.07.19
✎
05:41
|
Или создай ВТ_ПервоеУсловие и ВТ_ВтороеУсловие и соедини их внутренне
|
|||
23
ILM
гуру
10.07.19
✎
05:54
|
ВЫБРАТЬ РАЗЛИЧНЫЕ
НоменклатураДополнительныеРеквизиты.Ссылка КАК Ссылка ИЗ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты ВНУТРЕННЕЕ СОЕДИНЕНИЕ(ВЫБРАТЬ &Свойство КАК Свойство, &Значение КАК Значение ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ &Свойство1, &Значение1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ &Свойство2, &Значение2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ &Свойство3, &Значение3 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ &Свойство4, &Значение4 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ &Свойство5, &Значение5 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ &Свойство6, &Значение6) КАК ТабУсловия ПО НоменклатураДополнительныеРеквизиты.Свойство = ТабУсловия.Свойство И НоменклатураДополнительныеРеквизиты.Значение = ТабУсловия.Значение |
|||
24
seevkik
10.07.19
✎
06:15
|
(23) Круто, но не соответствует
|
|||
25
seevkik
10.07.19
✎
06:15
|
(24) вот этому (13)
|
|||
26
Simod
10.07.19
✎
06:26
|
(23) Если я правильно понял (0), то необходимо выбрать номенклатуру у которой присутствуют сразу несколько требуемых свойств и значений. Поэтому необходимо добавить группировку и отбор по количеству вхождений (ИМЕЮЩИЕ КОЛИЧЕСТВО(НоменклатураДополнительныеРеквизиты.Ссылка) = 6).
|
|||
27
seevkik
10.07.19
✎
06:35
|
(23) также (13) ?
|
|||
28
seevkik
10.07.19
✎
06:49
|
(22) Или выбери в одну таблицу выбранные свойства, соедини по ссылке, условия по свойствам
|
|||
29
seevkik
10.07.19
✎
07:05
|
Короче тут все хвастаются
1. Выбрать СправочникДР.Ссылка КАК Ссылка Поместить ВТ_Свойства ИЗ Справочник.Любой.ДополнительныеРеквизиты КАК СправочникДР ГДЕ СправочникДР.Свойство = &Свойство И СправочникДР.Значение = &Значение ; // Выбрать ВТ_Свойства.Ссылка КАК Ссылка ИЗ ВТ_Свойства КАК ВТ_Свойства Внутреннее соединение Справочник.Любой.ДополнительныеРеквизиты КАК СправочникДР2 ПО ВТ_Свойства.Ссылка = СправочникДР2.Ссылка ГДЕ СправочникДР2.Свойство = &Свойство2 И СправочникДР2.Значение = &Значение2 2. Выбрать СправочникДР.Ссылка Поместить ВТ_Свойства Из Справочник.любой.ДополнительныеРеквизиты КАК Справочник ДР Где СправочникДР.Свойство = &Свойство И СпправочникДР.Значение = &Значение ; // Выбрать СправочникДР.Ссылка Поместить ВТ_Свойства2 Из Справочник.любой.ДополнительныеРеквизиты КАК Справочник ДР Где СправочникДР.Свойство = &Свойство2 И СпправочникДР.Значение = &Значение2 ; // Выбрать ВТ_Свойства.Ссылка Из ВТ_Свойства Внутреннее соединение ВТ_Свойства2 ПО ВТ_Свойства.Ссылка = ВТ_Свойства2.Ссылка 3. Выбрать СправочникДР.Ссылка Поместить ВТ_Свойства ИЗ Справочник.Любой.Дополнительныереквизиты КАК СправочникДР Где СправочникДР.Свойство В(&МассивСвойств) ; // Выбрать ВТ_Свойства.Ссылка Из ВТ_Свойства Внутреннее соединение Вт_Свойства Как Вт_Свойства2 По Вт_Свойства.Ссылка = Вт_Свойства2.Ссылка Где Вт_Свойства.Свойство = &Свойство И Вт_Свойства2.Свойство = &Свойство2 И Вт_Свойства.Зачение = &Зачение И Вт_Свойства2.Зачение = &Зачение2 Кто что думает по скорости?) |
|||
30
Simod
10.07.19
✎
07:42
|
(29) Никто не хвастается. Задача элементарная и имеет несколько решений. "Красота" вторична. Имеет значение скорость выполнения и она будет зависеть от типов данных полей условия отбора или соединения, наличия индексов, размера таблиц и т.д.
А автор (0) просто не умеет писать запросы. Могу рекомендовать: http://www.sql-ex.ru/ |
|||
31
seevkik
10.07.19
✎
08:03
|
(30) ну так предлагают же соединения с сформированной в запросе таблицей, счетчики вхождения и тд - по моему мнению слишком редкое исполнение, как бы "нетиповое". Это я посчитал хвастовством
|
|||
32
seevkik
10.07.19
✎
08:05
|
и да, (26) не правильное решение
|
|||
33
ILM
гуру
10.07.19
✎
08:52
|
(25) Да ладно? Вы серьёзно?
|
|||
34
VS-1976
10.07.19
✎
09:31
|
Отбор за 1 раз + группировка (Количество)
|
|||
35
seevkik
10.07.19
✎
09:39
|
(34) А если у них общий список значений и попадется
Свойство1 = Значение6 Свойство2 = Значение5 Свойство3 = Значение4 Свойство4 = Значение3 Свойство5 = Значение2 Свойство6 = Значение1 ? Те свойства? Те. Те значения? Те) |
|||
36
unregistered
10.07.19
✎
09:54
|
В (23) верное решение.
Что-то вы тут уже перемудрили с какими-то счетчиками и прочими сомнениями типа (35). |
|||
37
seevkik
10.07.19
✎
10:39
|
(36) искать отдельно вхождения и отдельно свойств это верное решение, ага
|
|||
38
seevkik
10.07.19
✎
10:40
|
(37) опечатался - вхождения отдельно свойств и отдельно значений
|
|||
39
ILM
гуру
10.07.19
✎
11:52
|
Если нужны свойства или значения, то используется таблица селектор
ВЫБРАТЬ 1 как селектор Объединить все Выбрать 2. Потом если 1 то проверяйте "свойства", если 2 то "значения". А если добавить 3, то сможете и пары "свойство+значение" находить. |
|||
40
leonidk
10.07.19
✎
12:11
|
(0) Красиво - механизмом характеристик в СКД
|
|||
41
DrZombi
гуру
10.07.19
✎
12:16
|
(0) Запомни главное, одно аксиома, Доп реквизит в табличной части всегда один, т.е. физически реквизитов можно туда понадобавлять хоть 999 999 шт, одного и того же свойство, но это чистой воды ошибка и требует вмешательства техю поддержки :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |