Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 CTE иерархия с повторными элементами  [new]
michael R
Member

Откуда: из-за границы
Сообщений: 2113
SQL 2008

имеется примерная структура
то есть некоторые данные в дереве могут повторяться

root
-Cat1
--Cat11
---Cat111
----Prod11
--Cat12
---Prod11
---Prod12
-Cat2
--Cat21
---Prod11
---Prod13
--Cat22
---Cat111
----Prod11
----Prod13

.....................................


задача стоит следующая
если выбирается элемент или несколько элементов
то нужно получить эти элементы и их потомков во всём дереве

стандартный вариант id-parent для СTE не получается
в таблице есть rowid,id,parent (другие поля)

нужна идея в каком направлении копать
спасибо
10 июл 14, 21:01    [16289240]     Ответить | Цитировать Сообщить модератору
 Re: CTE иерархия с повторными элементами  [new]
gandjustas
Member

Откуда:
Сообщений: 857
Блог
michael R,

Очевидная идея - дополнительная таблица: (id_parent, id_child). Проблема только в том, что это получается не дерево, а граф, который может быть циклическим.
11 июл 14, 01:49    [16289752]     Ответить | Цитировать Сообщить модератору
 Re: CTE иерархия с повторными элементами  [new]
prog123
Guest
Дерево начинается с одной точки - Root. Нужен просто запрос, возвращающий поддерево нужного узла(начиная с Root)
11 июл 14, 05:59    [16289780]     Ответить | Цитировать Сообщить модератору
 Re: CTE иерархия с повторными элементами  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31948
michael R
имеется примерная структура
то есть некоторые данные в дереве могут повторяться
Модель данных то какая? Или задача в том, что бы её спроектировать?
11 июл 14, 09:13    [16289968]     Ответить | Цитировать Сообщить модератору
 Re: CTE иерархия с повторными элементами  [new]
Mairos
Member

Откуда:
Сообщений: 555
michael R, повторяются только некие имена элементов? И выбираются только имена? Или же у вас id это вообще не уникальный идентификатор? Я что-то не понял сути проблемы. ((
11 июл 14, 09:32    [16290090]     Ответить | Цитировать Сообщить модератору
 Re: CTE иерархия с повторными элементами  [new]
Glory
Member

Откуда:
Сообщений: 104751
michael R
стандартный вариант id-parent для СTE не получается
в таблице есть rowid,id,parent (другие поля)

И какая разница, что какие-то "другие поля" повторяются, если id-parent являются "стандартным вариантом CTE" ?
11 июл 14, 10:23    [16290364]     Ответить | Цитировать Сообщить модератору
 Re: CTE иерархия с повторными элементами  [new]
michael R
Member

Откуда: из-за границы
Сообщений: 2113
мда
не дерево , а граф
легче не стало....

то есть логика как бы проста
если выбрана категория или товар в категории на удаление
то нужно удалить везде где эта категория(товар в категории ) появляется в дереве
включая всё то что находится в ней
вложенность не ограничена и различные комбинации
дополнительные таблицы никто делать не даст
11 июл 14, 17:33    [16293430]     Ответить | Цитировать Сообщить модератору
 Re: CTE иерархия с повторными элементами  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
michael R
сли выбрана категория или товар в категории на удаление
то нужно удалить везде где эта категория(товар в категории ) появляется в дереве

И в фактах продаж тоже ????
11 июл 14, 17:35    [16293442]     Ответить | Цитировать Сообщить модератору
 Re: CTE иерархия с повторными элементами  [new]
michael R
Member

Откуда: из-за границы
Сообщений: 2113
да нет
это только условный пример
11 июл 14, 17:41    [16293477]     Ответить | Цитировать Сообщить модератору
 Re: CTE иерархия с повторными элементами  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
как вариант добавить поел с посчитаным путем типа /root/Cat1/cat2/Prod1 для каждого елемента, потом искать по like
11 июл 14, 17:46    [16293502]     Ответить | Цитировать Сообщить модератору
 Re: CTE иерархия с повторными элементами  [new]
michael R
Member

Откуда: из-за границы
Сообщений: 2113
Maxx ,мысль понял
на каждый элемент выстроить его путь в иерархии(или названия или id's)
да CTE такое делает
спасибо ! будем пробовать
11 июл 14, 17:53    [16293531]     Ответить | Цитировать Сообщить модератору
 Re: CTE иерархия с повторными элементами  [new]
babona
Member [заблокирован]

Откуда: Батуринск
Сообщений: 1816
Maxx
как вариант добавить поел с посчитаным путем типа /root/Cat1/cat2/Prod1 для каждого елемента, потом искать по like


+1
для обеспечения этого поля сделать триггер и повесить индекс чтобы Like подхватывал его
12 июл 14, 02:06    [16294972]     Ответить | Цитировать Сообщить модератору
 Re: CTE иерархия с повторными элементами  [new]
michael R
Member

Откуда: из-за границы
Сообщений: 2113
babona индекс на LIKE скорее всего не поможет поскольку % ... % любое вхождение
у меня есть CRL-функция на регулярку
это точно будет лучше

ещё раз всем спасибо
завтра буду пробовать
12 июл 14, 10:38    [16295206]     Ответить | Цитировать Сообщить модератору
 Re: CTE иерархия с повторными элементами  [new]
michael R
Member

Откуда: из-за границы
Сообщений: 2113
нет всё таки не то это
не всё выбирает

1 
---2
------4
------5
---------2
---3
------5
---------2


если отмеченно '3' то выбраться должно
'2' ,'3' ,'4' ,'5' во всём дереве
полный путь СТЕ не помогает
мда
нужен обход графа....
13 июл 14, 17:09    [16297886]     Ответить | Цитировать Сообщить модератору
 Re: CTE иерархия с повторными элементами  [new]
aleks2
Guest
michael R
нет всё таки не то это
не всё выбирает

1 
---2
------4
------5
---------2
---3
------5
---------2


если отмеченно '3' то выбраться должно
'2' ,'3' ,'4' ,'5' во всём дереве
полный путь СТЕ не помогает
мда
нужен обход графа....


Страдалец, твои стоны не вызывут сочувствия.
Ибо ты не способен даже на ПРИМЕР данных и желаемого результата.
Переквалифицируйся в управдомы.
13 июл 14, 18:03    [16298025]     Ответить | Цитировать Сообщить модератору
 Re: CTE иерархия с повторными элементами  [new]
michael R
Member

Откуда: из-за границы
Сообщений: 2113
aleks2
спасибо на добром слове )))

вроде как получилось
мало-мало
13 июл 14, 18:18    [16298054]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить