Consulta recurrente de SQL Server 2005 con bucles en los datos, ¿es posible?
Tengo una mesa estándar de jefe / empleado subordinado. Necesito seleccionar un jefe (especificado por ID) y todos sus subordinados (y sus subrodinados, etc.) Desafortunadamente, los datos del mundo real tienen algunos bucles (por ejemplo, los dueños de ambas compañías se han establecido como su jefe). La consulta recursiva simple con un CTE ahoga en esto (nivel de recursión máximo de 100 superado). ¿Pueden los empleados aún ser seleccionados? No me importa el orden en el que se seleccionan, solo que cada uno de ellos se selecciona una vez.
Adicional: Quieres mi consulta? Umm ... OK ... creo que es bastante obvio, pero - aquí está:with
UserTbl as -- Selects an employee and his subordinates.
(
select a.[User_ID], a.[Manager_ID] from [User] a WHERE [User_ID] = @UserID
union all
select a.[User_ID], a.[Manager_ID] from [User] a join UserTbl b on (a.[Manager_ID]=b.[User_ID])
)
select * from UserTbl
Agregado 2: Oh, en caso de que no quede claro, este es un sistema de producción y tengo que hacer una pequeña actualización (básicamente, añadir un tipo de informe). Por lo tanto, prefiero no modificar los datos si se puede evitar.