powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Рекурсивный запрос
6 сообщений из 6, страница 1 из 1
Рекурсивный запрос
    #37841943
kim-kong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочу вывести все маршруты с пересадками. Выполняю рекурсивный запрос.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
with cte as
(select id_vzlet, id_posadka, 1 as [level], cast('-'+id_vzlet+'-'+id_posadka+'-' as varchar(max)) as path
from marshrut

union all

select cte.id_vzlet, m.id_posadka, cte.[level]+1, cte.path+cast(m.id_posadka+'-' as varchar(max))
from marshrut m inner join cte
  on cte.id_posadka = m.id_vzlet
where cte.path not like cast('%-'+m.id_posadka+'-%' as varchar(max)))

select * from cte
order by [level], id_vzlet



Сообщение 245, уровень 16, состояние 1, строка 1
Ошибка преобразования значения varchar "%-" в тип данных int.
Я там вроде как int в varchar перевожу, ничего не понимаю.
...
Рейтинг: 0 / 0
Рекурсивный запрос
    #37841950
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kim-kong, нужно сначала привести отдельно m.id_posadka, а потом складывать с другими строками
...
Рейтинг: 0 / 0
Рекурсивный запрос
    #37841954
kim-kong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что значит привести ?
...
Рейтинг: 0 / 0
Рекурсивный запрос
    #37841962
sskk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cast(m.id_posadka as varchar(max))

например так можно привести.
вы пытаетесь сложить m.id_posadka (целочисленный тип данных) со строковым типом.
...
Рейтинг: 0 / 0
Рекурсивный запрос
    #37841965
sskk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
cast('-'+id_vzlet+'-'+id_posadka+'-' as varchar(max)) as path


этот кусок, как мне кажется, будет выдавать не те результаты, которые Вы хотите.
...
Рейтинг: 0 / 0
Рекурсивный запрос
    #37842951
kaygees
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
cast('-'+id_vzlet+'-'+id_posadka+'-' as varchar(max)) 


заменить на
Код: sql
1.
'-'+cast(id_vzlet as varchar(max))+'-'+cast(id_posadka as varchar(max))+'-'
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Рекурсивный запрос
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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