Ver Mensaje Individual
  #4 (permalink)  
Antiguo 11/01/2006, 09:04
Avatar de Bravenap
Bravenap
 
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 22 años, 1 mes
Puntos: 4
He encontrado este código, pero hay algo que no va bien, pues me devuelve un sólo registro, es como si no entrara en el bucle. La idea es de aquí

Código:
ALTER PROCEDURE MostrarJerarquia 
(
	@Root int
)
AS
	BEGIN
		SET NOCOUNT ON
		DECLARE @ID int, @Categoria char(250)
   
		SET @Categoria = (SELECT Categoria FROM CategoriasFAQS WHERE ID = @Root)
		SELECT @Categoria AS 'Categoría'
		/*PRINT REPLICATE('-', @@NESTLEVEL*4) +  @Categoria*/
   
   		SET @ID = (SELECT ID FROM CategoriasFAQS WHERE IDSuperior = @Root) 
   		WHILE @ID IS NOT NULL
    			BEGIN 
				EXEC MostrarJerarquia @ID
				SET @ID = (SELECT MIN(ID) FROM CategoriasFAQS WHERE IDSuperior = @Root AND ID > @ID)
			END
	END
La tabla de categorías es esta:
ID | Categoria | IDSuperior
-----------------------------
1 | Clientes
2 | Venta
3 | Venta presencial | 2
4 | Venta electrónica | 2
5 | Cuotas | 1
6 | Exenciones | 1
7 | Cursos formación
8 | Ordinaria | 3
9 | Urgente | 3
10 | Ordinaria | 4
11 | Urgente | 4
12 | Anuales | 5
13 | Mensuales | 5
14 | Anuales Tipo A | 12
15 | Anuales Tipo B | 12

Si pongo, por ejemplo, EXEC MostrarJerarquia 10 sólo me devuelve el registro 'Ordinaria' y con EXEC MostrarJerarquia 1 tan sólo 'Clientes'
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!