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

Откуда:
Сообщений: 3
Добрый день, помогите разобраться
Необходимо написать древовидный запрос MS SQL возвращающий дерево спецификации (состав) шины (таблица MD_BOM),
где: MAT_SAP_CODE – код материала
CHILD_MAT_SAP_CODE – код дочернего материала, из которого изготовлен MAT_SAP_CODE


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]



До этого никогда не сталкивалась с такими задачами

Сообщение было отредактировано: 5 июл 19, 12:51
5 июл 19, 10:03    [21921360]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться c иерархией  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1431
elena1595,

чтобы понять рекурсию - нужно понять рекурсию... :)
5 июл 19, 10:14    [21921370]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться c иерархией  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1431
elena1595,

опять же, надо понимать - что у вас там за граф. В чистом виде "дерево"? Или произвольные граф с замыканиями (петлями)?
5 июл 19, 10:15    [21921374]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться c иерархией  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1431
elena1595,

но по теме читать за "рекурсивный CTE"
5 июл 19, 10:18    [21921379]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться c иерархией  [new]
elena1595
Member

Откуда:
Сообщений: 3
произвольные граф с замыканиями (петлями)
5 июл 19, 10:21    [21921382]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться c иерархией  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 6936
elena1595,

T-SQL не имеет средств для работы с зацикленными графами.
5 июл 19, 11:33    [21921460]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться c иерархией  [new]
aleks222
Member

Откуда:
Сообщений: 754
elena1595
произвольные граф с замыканиями (петлями)

Вы бредите?
Какая-такая "спецификация" "с петлями"?
5 июл 19, 12:26    [21921516]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться c иерархией  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 19569
Владислав Колосов
T-SQL не имеет средств для работы с зацикленными графами.
Ну это зависит от того, что разуметь под "работой". Ибо оборвать рекурсию при обнаружении цикла не так уж и сложно, всего-то и надо что контролировать, что добавляемый узел отсутствует в CTE (а при поиске кратчайших путей тестировать на отсутствие дубликатов подпутей длины более 1).
5 июл 19, 13:06    [21921555]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться c иерархией  [new]
uaggster
Member

Откуда:
Сообщений: 724
Владислав Колосов
elena1595,

T-SQL не имеет средств для работы с зацикленными графами.

2019 - уже имеет.
Спасибо за подсказку.
5 июл 19, 15:36    [21921677]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться c иерархией  [new]
uaggster
Member

Откуда:
Сообщений: 724
elena1595, посмотрите вот эту ветку: https://www.sql.ru/forum/1314189/otsortirovat-v-kavychkah-vzveshennyy-graf-vozmozhno-li-eto-na-tsql
Буквально неделю назад мучился аналогичной задачей. Ответы aleks222
Отсортировать (в кавычках) взвешенный граф. Возможно ли это на TSQL?
и финальный ответ court
Отсортировать (в кавычках) взвешенный граф. Возможно ли это на TSQL?
5 июл 19, 15:42    [21921680]     Ответить | Цитировать Сообщить модератору
 Re: помогите разобраться c иерархией  [new]
court
Member

Откуда:
Сообщений: 1829
uaggster
elena1595, посмотрите вот эту ветку:

Думаю у ТС ситуацию значительно проще, чем в той задаче.
Ей просто нужно выполнить п.6 из Рекомендации по оформлению сообщений в форуме
потому как скрипт таблицы это конечно хорошо, но мало :)
5 июл 19, 17:42    [21921771]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить