|
Выборка значений из таблицы с несколькими уровнями вложенности
|
|||
---|---|---|---|
#18+
Добрый день, Прошу помочь по возможности. Имеется: 1. Таблица со списком товаров (id_товара, id_class, т.е. группы к которой товар относится) 2. Таблица классификаторов (id_class, id_parent_class), где id_parent_class - ссылка на такой же id_class (той же таблицы), т.е. группа более высокого уровня). Количество вложений групп одну в другу - произвольное. Необходимо сделать выборку следующего вида: Товар, Группа (в которую непосредственно входит товар), Главная группа (группа самого верхнего уровня, у которой id_parent_class равен Null). Сделал через временную таблицу с последующим перебором (cursor), где для каждой группы ищется циклом ее группа "верхнего уровня". Но т.к. товаров много - получается долго. Возможно, есть другие способы? Среда: SQL2008. Заранее благодарю за ответы по существу. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2021, 21:36 |
|
Выборка значений из таблицы с несколькими уровнями вложенности
|
|||
---|---|---|---|
#18+
Задача на рекурсию? СТЕ в 2008-ом уже есть. Хорошо бы что бы Вы пояснили вопрос примером и примерным результатом. PS Для больших объёмов будет долго. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2021, 21:55 |
|
Выборка значений из таблицы с несколькими уровнями вложенности
|
|||
---|---|---|---|
#18+
SIMPLicity_, Таблица 1 (товары): Код: plaintext 1. 2. 3. 4. 5. 6. 7.
Таблица 2 (группы) Код: plaintext 1. 2. 3. 4. 5.
Результирующая таблица: Код: plaintext 1. 2. 3. 4. 5. 6. 7.
5-я группа принадлежит 3-й, которая, в свою очередь, принадлежит 1-й. Т.о. в результирующей таблице, в третьем столбце должны быть представлены группы самого верхнего уровня. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2021, 22:13 |
|
Выборка значений из таблицы с несколькими уровнями вложенности
|
|||
---|---|---|---|
#18+
Sviman144, я бы использовал тип hierarchyid, по нему голова быстро находится, если проиндексировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2021, 23:09 |
|
Выборка значений из таблицы с несколькими уровнями вложенности
|
|||
---|---|---|---|
#18+
Sviman144 Сделал через временную таблицу с последующим перебором (cursor), где для каждой группы ищется циклом ее группа "верхнего уровня". Но т.к. товаров много - получается долго . Возможно, есть другие способы? Перепишите свою процедуру (хоть курсором, хоть CTE) так чтобы на основании Таблицы 2 она формировала таблицу (набор данных) вида id_grpid_head1122314251 То есть Группа и её Главная группа. Таблица групп у вас маленькая - работать будет быстро. И потом эту таблицу джоините с товарами - и сразу получаетет результат в нужном виде. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2021, 00:43 |
|
|
start [/forum/topic.php?fid=46&fpage=32&tid=1685006]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 142ms |
0 / 0 |