|
Туплю с запросом. | ☑ | ||
---|---|---|---|---|
0
Lama12
10.04.14
✎
18:18
|
Может под вечер а может вообще туплю :)
Есть выборка папок справочника контрагенты (не все папки). Нужно запросом определить к какой из папок это контрагент относится. Контрагент может быть на несколько уровней ниже чем уровень анализируемых папок. Т.е. папка "А" на втором уровне (это та пака которая в выборке), в ней есть еще папка "Б", в ней еще "В", а уже в ней анализируемый контрагент. Как написать запрос который возвращал бы папку "А"? Папки выборки не могут пересекаться. Т.е. они все на одном уровне. |
|||
1
Wobland
10.04.14
✎
18:22
|
уровень иерархии ограничен?
|
|||
2
Lama12
10.04.14
✎
18:23
|
(1) нет
|
|||
3
Maxus43
10.04.14
✎
18:24
|
увы...
|
|||
4
Lama12
10.04.14
✎
18:24
|
Ладно, я домой. Если что ни будь к утру придумаю, завтра напишу.
|
|||
5
Maxus43
10.04.14
✎
18:25
|
(4) все 10 лет существования мисты люди думали, и ничего не придумали
|
|||
6
User_Agronom
10.04.14
✎
18:27
|
(0) Обязательно запросом?
|
|||
7
fisher
10.04.14
✎
18:28
|
(2) А придется :)
С иерархиями простых и красивых решений обычно нет. Обычные запросы как бы на плоские таблицы рассчитаны. Проще всего заложиться на некий уровень вложенности (допустим, 5). Мол контрагент не может быть ниже 5 уровней от анализируемых папок. Тогда будет что-то типа ГДЕ Папка = Контрагент.Родитель ИЛИ Папка = Контрагент.Родитель.Родитель ... Более универсальные способы подразумевают несколько запросов. |
|||
8
_fvadim
10.04.14
✎
18:29
|
(6) тру адинэсниг между запросом на 90 строк и циклом на 3 строки всегда выберет запрос.
|
|||
9
fisher
10.04.14
✎
18:32
|
(8) Потому что в отличие от не тру одинэснигов им известно, что обращение через точку - это тоже запрос.
|
|||
10
User_Agronom
10.04.14
✎
18:32
|
(8) По иерархии рекурсией классно лазить
|
|||
11
fisher
10.04.14
✎
18:32
|
И лучше один запрос, чем несколько запросов в цикле.
|
|||
12
User_Agronom
10.04.14
✎
18:33
|
(9) !? Это точно? Метод объекта получается запросом?
|
|||
13
Maxus43
10.04.14
✎
18:34
|
(12) обращение к реквизитам и т.д. - влечет за собой запрос
|
|||
14
_fvadim
10.04.14
✎
18:34
|
(12) он имеет ввиду ссылочные реквизиты типа Спр.Родитель.Родитель.Родитель
|
|||
15
_fvadim
10.04.14
✎
18:36
|
(13) если реквизит типа число, то тоже запрос?
|
|||
16
fisher
10.04.14
✎
18:37
|
(12) Смотря какой. Если ты про ПринадлежитЭлементу(), то ясен пень будет обращение к БД.
(15) Какая разница? Если точка от ссылки - то будет запрос. Но при первом запросе весь объект закэшируется. |
|||
17
Fragster
гуру
10.04.14
✎
19:40
|
тут через СКД для верхнего уровня, переделывается под "список папок" элементарно
|
|||
18
Fragster
гуру
10.04.14
✎
19:40
|
||||
19
Drac0
10.04.14
✎
20:05
|
(0) Можно получить уровень элемента и динамически собрать запрос с условием ИЛИ. ИМХО, оптимальный вариант.
|
|||
20
kumena
10.04.14
✎
20:19
|
>> Можно получить уровень элемента и динамически собрать запрос с условием ИЛИ. ИМХО, оптимальный вариант
а движок по твоему уровень в ссылке хранит? |
|||
21
Drac0
11.04.14
✎
07:01
|
(20) можно оттрейсить обращение. Но в худшем случае, это один лишний маленький запрос.
|
|||
22
Lama12
11.04.14
✎
09:05
|
Мда... за ночь ничего в голову не пришло :)
буду смотреть (18) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |