|
Помогите составить запрос |
☑ |
0
Aleksey
14.05.14
✎
00:11
|
Что то никак не соображу текст запроса
Дано В типовая ТиС есть справочник "Свойства номенклатуры" который подчинен справочнику Номенклатура и имеет 2 реквизита ВидСвойства (Справочник) и ЗначениеСвойства (Справочник)
Допустим в справочнике есть следующие записи
Владелец (Номенклатура) | Вид свойства | Значение
Ручка
- Группа - канцтовары
- Цвет - синий
Карандаш
- Группа - канцтовары
- Цвет - красный
Стол
- Группа - Мебель
Стул
- Группа - Мебель
- Цвет - синий
Маркер
- Группа - маркер
- Цвет - синий
Пользователь задает несколько значений свойств. в качестве фильтра. На выходе нужно получить список номенклатуры. При этом если пользователь задает значения свойств одного вида, то условие должно отрабатываться как ИЛИ, а если разного вида, то как И
Т.е. пользователь задал следующие условия
- Группа - канцтовары
- Группа - мебель
- Цвет - синий
В результате в выборе должно получится Ручка и Стул
Карандаш не подходит, так как цвет не синий. Стол тоже в пролёте, так как у него цвет вообще не указан, Маркер не входит в отбираемую группу
Вот что то никак в голову текст запроса не лезет, может кто поможет?
|
|
1
Aleksey
14.05.14
✎
00:12
|
Блин тема по 7-ке, но по сути не важно, ибо буду юзать 1sqlite, т.е. текст запроса будет примерно одинаковый, что в 7-ке что в 8-ке
|
|
2
viktor_vv
14.05.14
✎
00:20
|
Ну так при обработке фильтра загоняй значения свойств одинакового вида в отдельные списки, укладывай списки, а дальше
Или кучу внутренних соединений с временными таблицами (в sqlite вроде как лучше левое соединение с условием в Where на вторую таблицу), либо в Where ПолеЗначенияСвойства in (Select val From ВремТаблица) и все это через И .
Текст запроса таки придется динамически формировать.
|
|
3
Aleksey
14.05.14
✎
00:27
|
Да вот тоже в голове крутится запрос в цикле с укладыванием результата во временную таблицу
|
|
4
viktor_vv
14.05.14
✎
00:51
|
Только е запрос в цикле, а формирование текста запроса динамически, запрос один будет.
Ну и там ЗначениеСвойств наверное Справочник неопределенного вида, а в УложитьОбъекты будет ИД без вида char(9), надо будет еще вид добавлять в условие связи.
|
|
5
viktor_vv
14.05.14
✎
00:51
|
*Только не запрос в цикле ...
|
|