Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Собрать дерево вхождений
|
|||
|---|---|---|---|
|
#18+
Добрый день. В базе данных на MS SQL есть таблица, смысл которой показать вхождения одних компонентов в другие. К примеру: Id IdIn 1 2 1 3 2 4 3 5 5 8 5 19 ... Столбец Id - Id компонента, IdIn показывает какие компоненты входят в компонент Id В программе нужно построить дерево вхождений где верхушкой является определённый компонент. Например, 1й компонент раскрывается на 2 и 3, во втором видим 4, в третьем 5. Собственно средствами программы я это реализовал, но получилось что для каждого элемента я делаю запрос на входящие в него компоненты, добавляю потом для каждого добавленного делаю запрос и так далее, то есть запросов к базе столько, сколько вхождений различных компонентов. Учитывая, что таких вхождений может быть до 400, а подключение к базе происходит через интернет, возможны большие задержки в формировании. ВОПРОС: По сути мне нужны все ID которые напрямую или через другие компоненты входят в компонент с нужным ID. Можно ли как то это реализовать с помощью хранимой процедуры, функции, или может быть это можно сделать единым запросом? Много думал как это сделать, но к сожалению безуспешно. Прошу помочь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2019, 22:51 |
|
||
|
Собрать дерево вхождений
|
|||
|---|---|---|---|
|
#18+
Если у вас - заведомое дерево, то можно обойтись рекурсивным запросом, как выше указал Akina . Однако, если у вас в цепочке есть петли (например, это может быть ошибкой бизнес-логики), то одним запросом - не получится. Если только у вас не 2019 и вы не храните всё это в виде графа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2019, 08:54 |
|
||
|
Собрать дерево вхождений
|
|||
|---|---|---|---|
|
#18+
invm , конечно же, прошу прощения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2019, 08:55 |
|
||
|
Собрать дерево вхождений
|
|||
|---|---|---|---|
|
#18+
uaggsterОднако, если у вас в цепочке есть петли (например, это может быть ошибкой бизнес-логики), то одним запросом - не получится.Получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2019, 09:51 |
|
||
|
Собрать дерево вхождений
|
|||
|---|---|---|---|
|
#18+
uaggsterесли у вас в цепочке есть петли (например, это может быть ошибкой бизнес-логики), то одним запросом - не получитсяЕму нужны не полные пути, а голый список, в этом случае рекурсия в CTE нормально завершится после выбора всех узлов. Просто нужно в рекурсивной части отсекать то, что уже есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2019, 09:53 |
|
||
|
Собрать дерево вхождений
|
|||
|---|---|---|---|
|
#18+
MinamotouaggsterОднако, если у вас в цепочке есть петли (например, это может быть ошибкой бизнес-логики), то одним запросом - не получится.Получится. А как? Например: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Должно получиться: 1, 2, 3, 4 5, 6, 7 8 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2019, 13:23 |
|
||
|
Собрать дерево вхождений
|
|||
|---|---|---|---|
|
#18+
uaggsterДолжно получиться: 1, 2, 3, 4 5, 6, 7 8 Не, в постановке автора GamlexВ программе нужно построить дерево вхождений где верхушкой является определённый компонент. uaggsterMinamotoпропущено... Получится. А как? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2019, 13:59 |
|
||
|
Собрать дерево вхождений
|
|||
|---|---|---|---|
|
#18+
Minamoto, а, понятно. Это я - вылил воду из чайника и попытался свести задачу к предыдущей. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2019, 14:55 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39861271&tid=1687290]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
84ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 270ms |
| total: | 470ms |

| 0 / 0 |
