Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / помогите разобраться c иерархией / 11 сообщений из 11, страница 1 из 1
05.07.2019, 10:03
    #39834198
elena1595
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите разобраться c иерархией
Добрый день, помогите разобраться
Необходимо написать древовидный запрос MS SQL возвращающий дерево спецификации (состав) шины (таблица MD_BOM),
где: MAT_SAP_CODE – код материала
CHILD_MAT_SAP_CODE – код дочернего материала, из которого изготовлен MAT_SAP_CODE


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
CREATE TABLE [dbo].[MD_BOM]( 
[MAT_SAP_CODE] [varchar](9) NOT NULL, 
[MAT_VARIANT] [varchar](10) NOT NULL, 
[CNT_CODE] [varchar](3) NOT NULL,
[LMM_SEQUENCE] [int] NOT NULL, 
[MT_CODE] [varchar](8) NOT NULL,
[BV_STATUS] [varchar](5) NOT NULL,
[CHILD_MAT_VARIANT] [varchar](10) NULL, 
[CHILD_MAT_SAP_CODE] [varchar](9) NULL, 
[CHILD_CNT_CODE] [varchar](3) NULL,
CONSTRAINT [XPKMD_BOM] PRIMARY KEY CLUSTERED
(
[MAT_SAP_CODE] ASC,
[MAT_VARIANT] ASC,
[CNT_CODE] ASC,
[MT_CODE] ASC,
[BV_STATUS] ASC,
[LMM_SEQUENCE] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] 

ALTER TABLE [dbo].[MD_BOM] WITH CHECK ADD CONSTRAINT [R_199] FOREIGN KEY([MAT_SAP_CODE], [MAT_VARIANT], [CNT_CODE])
REFERENCES [dbo].[MD_MATERIALS] ([MAT_SAP_CODE], [MAT_VARIANT], [CNT_CODE]) 


ALTER TABLE [dbo].[MD_BOM] WITH CHECK ADD CONSTRAINT [R_199_CHILD] FOREIGN KEY([CHILD_MAT_SAP_CODE], [CHILD_MAT_VARIANT], [CHILD_CNT_CODE])
REFERENCES [dbo].[MD_MATERIALS] ([MAT_SAP_CODE], [MAT_VARIANT], [CNT_CODE])
CREATE TABLE [dbo].[MD_MATERIALS]( 
[MAT_CODE] [varchar](6) NOT NULL,
[CNT_CODE] [varchar](3) NOT NULL,
[MAT_SAP_CODE] [varchar](9) NOT NULL, 
[MAT_PRODUCTION_GROUP] [varchar](10) NULL, 
[MAT_DESC] [varchar](40) NULL, 
CONSTRAINT [XPKMD_MATERIALS] PRIMARY KEY CLUSTERED 
(
[MAT_SAP_CODE] ASC,
[MAT_VARIANT] ASC,
[CNT_CODE] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]




До этого никогда не сталкивалась с такими задачами
...
Рейтинг: 0 / 0
05.07.2019, 10:14
    #39834208
Щукина Анна
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите разобраться c иерархией
elena1595,

чтобы понять рекурсию - нужно понять рекурсию... :)
...
Рейтинг: 0 / 0
05.07.2019, 10:15
    #39834211
Щукина Анна
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите разобраться c иерархией
elena1595,

опять же, надо понимать - что у вас там за граф. В чистом виде "дерево"? Или произвольные граф с замыканиями (петлями)?
...
Рейтинг: 0 / 0
05.07.2019, 10:18
    #39834214
Щукина Анна
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите разобраться c иерархией
elena1595,

но по теме читать за " рекурсивный CTE "
...
Рейтинг: 0 / 0
05.07.2019, 10:21
    #39834216
elena1595
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите разобраться c иерархией
произвольные граф с замыканиями (петлями)
...
Рейтинг: 0 / 0
05.07.2019, 11:33
    #39834273
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите разобраться c иерархией
elena1595,

T-SQL не имеет средств для работы с зацикленными графами.
...
Рейтинг: 0 / 0
05.07.2019, 12:26
    #39834310
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите разобраться c иерархией
elena1595произвольные граф с замыканиями (петлями)
Вы бредите?
Какая-такая "спецификация" "с петлями"?
...
Рейтинг: 0 / 0
05.07.2019, 13:06
    #39834337
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите разобраться c иерархией
Владислав КолосовT-SQL не имеет средств для работы с зацикленными графами.Ну это зависит от того, что разуметь под "работой". Ибо оборвать рекурсию при обнаружении цикла не так уж и сложно, всего-то и надо что контролировать, что добавляемый узел отсутствует в CTE (а при поиске кратчайших путей тестировать на отсутствие дубликатов подпутей длины более 1).
...
Рейтинг: 0 / 0
05.07.2019, 15:36
    #39834404
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите разобраться c иерархией
Владислав Колосовelena1595,

T-SQL не имеет средств для работы с зацикленными графами.
2019 - уже имеет.
Спасибо за подсказку.
...
Рейтинг: 0 / 0
05.07.2019, 15:42
    #39834405
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите разобраться c иерархией
...
Рейтинг: 0 / 0
05.07.2019, 17:42
    #39834464
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите разобраться c иерархией
uaggsterelena1595, посмотрите вот эту ветку:
Думаю у ТС ситуацию значительно проще, чем в той задаче.
Ей просто нужно выполнить п.6 из Рекомендации по оформлению сообщений в форуме
потому как скрипт таблицы это конечно хорошо, но мало :)
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / помогите разобраться c иерархией / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]