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

id parentidvalue
1111Болты
3211 болт 6х90
4311 болт 6х80
1511 болт 6х70


Необходимо сделать запрос, в результате которого будет получено:

12
Болты Болты
болт 6х90Болты
болт 6х80Болты
болт 6х70Болты


Помогите пожалуйста, ничего в голову не приходит. Заранее спасибо.
17 май 16, 12:17    [19182963]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать такой Select?  [new]
Добрый Э - Эх
Guest
Аня123123,

для начала - почитать про рекурсивный CTE. А там, глядишь, и мыли в голову придут
17 май 16, 12:22    [19182988]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать такой Select?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Добрый Э - Эх
Аня123123,

для начала - почитать про рекурсивный CTE. А там, глядишь, и мыли в голову придут


Не читайте про рекурсивный cte, его теперь пхают налево и на право
17 май 16, 12:27    [19183006]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать такой Select?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
DECLARE @T TABLE
(
	id		INT,
	parentid	INT ,
	value		VARCHAR(255)
)

INSERT INTO @T
(
	id	,
	parentid,
	value
)
VALUES
(11,	11,	'Болты'),
(32,	11,	'болт 6х90'),
(43,	11,	'болт 6х80'),
(15,	11,	'болт 6х70')

SELECT 
b.value,a.value
FROM 
	@T	a
JOIN
	@T	b
ON
	a.Id = b.ParentId
17 май 16, 12:30    [19183021]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать такой Select?  [new]
Аня123123
Guest
TaPaK, большое спасибо за ответ, все работает :)
17 май 16, 12:39    [19183093]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать такой Select?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Аня123123
TaPaK, большое спасибо за ответ, все работает :)

ну про cte я шутил конечно :) читайте, учите, применяйте где попало :)
17 май 16, 12:41    [19183101]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать такой Select?  [new]
Добрый Э - Эх
Guest
TaPaK,

кто-то сказал, что уровней вложенности ровно два?
17 май 16, 12:41    [19183103]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать такой Select?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Добрый Э - Эх
TaPaK,

кто-то сказал, что уровней вложенности ровно два?

кто-то сказал что надо показывать самый верхний уровень дерева?
17 май 16, 12:44    [19183136]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать такой Select?  [new]
Добрый Э - Эх
Guest
TaPaK
кто-то сказал что надо показывать самый верхний уровень дерева?
кто-то просто привел неполный и нерепрезентативный набор тестовых данных. а кто-то на это повелся и привел частное решение для отдельно взятого частного случая.
а мир он гораздо сложнее, чем просто болт и одна его разновидность. ;)
17 май 16, 13:00    [19183268]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать такой Select?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Добрый Э - Эх
TaPaK
кто-то сказал что надо показывать самый верхний уровень дерева?
кто-то просто привел неполный и нерепрезентативный набор тестовых данных. а кто-то на это повелся и привел частное решение для отдельно взятого частного случая.
а мир он гораздо сложнее, чем просто болт и одна его разновидность. ;)

мир гараздо проще - задача показать родителя, указанный пример покажет для любого количество веток родителя, и придумывать можно конечно сколько угодно
17 май 16, 13:02    [19183286]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать такой Select?  [new]
Добрый Э - Эх
Guest
TaPaK
мир гараздо проще - задача показать родителя, указанный пример покажет для любого количество веток родителя, и придумывать можно конечно сколько угодно
да не вопрос, многие всю жизнь смотрят на мир через щель забрала в шлеме.

З.Ы.
не удивлюсь второму пришествую Ани с вопросом: "а как сделать, если болты ещё могут быть под накидной ключ и под шестигранник"
17 май 16, 13:10    [19183344]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать такой Select?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Добрый Э - Эх
TaPaK
мир гараздо проще - задача показать родителя, указанный пример покажет для любого количество веток родителя, и придумывать можно конечно сколько угодно
да не вопрос, многие всю жизнь смотрят на мир через щель забрала в шлеме.

З.Ы.
не удивлюсь второму пришествую Ани с вопросом: "а как сделать, если болты ещё могут быть под накидной ключ и под шестигранник"

и?
17 май 16, 13:15    [19183402]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать такой Select?  [new]
Добрый Э - Эх
Guest
TaPaK
и?
шлем сними
17 май 16, 13:30    [19183529]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать такой Select?  [new]
ttt12344
Guest
У меня такое подозрение, что на где то в более правильной параллельной вселенной у строки id = 11, parentid будет не равен 11
20 май 16, 18:05    [19199985]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить