Buenas a todos
Tengo una tabla para introducir valores y obtener una estructura del
tipo arbol.
La idea es que un padre pueda tener muchos "hijos", y guardo el valor
de nivel para acelerar luego un select para obtener todo ordenado tal
como lo mostraria en un control del tipo treeview.
En el caso de los primeros padres IDPadre = NULL y Nivel = 1, el valor
de Numero es controlado en el insert para que no se repitan, y pueden
haber hijos con numero 1, 2, 3, 8, 15, etc.. sucesivamente.
La duda surge al hacer este select, ya que si ordeno por Nivel,
IDPadre y Numero no obtengo el contenido como lo deseo. Alguna
sugerencia?
Dejo a continuacion las sentencias sql para que lo prueben...
if NOT (object_id('tempdb.dbo.#TablaAux') is null)
DROP TABLE #TablaAux
CREATE TABLE #TablaAux
(
IDH int IDENTITY (1,1) NOT FOR REPLICATION NOT NULL,
IDPadre int NULL,
Descripcion varchar(50) NOT NULL,
Numero int NOT NULL,
Nivel tinyint NOT NULL,
Eliminado bit NOT NULL
)
INSERT INTO #TablaAux (IDPadre, Descripcion, Numero, Nivel, Eliminado)
VALUES (NULL, 'Padre1', 1, 1, 0) --ID 1
INSERT INTO #TablaAux (IDPadre, Descripcion, Numero, Nivel, Eliminado)
VALUES (NULL, 'Padre2', 2, 1, 0) --ID 2
INSERT INTO #TablaAux (IDPadre, Descripcion, Numero, Nivel, Eliminado)
VALUES (NULL, 'Padre3', 3, 1, 0) --ID 3
INSERT INTO #TablaAux (IDPadre, Descripcion, Numero, Nivel, Eliminado)
VALUES (1, 'Hijo11', 1, 2, 0) --ID 4
INSERT INTO #TablaAux (IDPadre, Descripcion, Numero, Nivel, Eliminado)
VALUES (1, 'Hijo12', 2, 2, 0) --ID 5
INSERT INTO #TablaAux (IDPadre, Descripcion, Numero, Nivel, Eliminado)
VALUES (2, 'Hijo21', 1, 2, 0) --ID 6
INSERT INTO #TablaAux (IDPadre, Descripcion, Numero, Nivel, Eliminado)
VALUES (2, 'Hijo22', 2, 2, 0) --ID 7
INSERT INTO #TablaAux (IDPadre, Descripcion, Numero, Nivel, Eliminado)
VALUES (3, 'Hijo31', 1, 2, 0) --ID 8
INSERT INTO #TablaAux (IDPadre, Descripcion, Numero, Nivel, Eliminado)
VALUES (4, 'Nieto111', 1, 3, 0) --ID 9
INSERT INTO #TablaAux (IDPadre, Descripcion, Numero, Nivel, Eliminado)
VALUES (4, 'Nieto112', 2, 3, 0) --ID 10
INSERT INTO #TablaAux (IDPadre, Descripcion, Numero, Nivel, Eliminado)
VALUES (7, 'Nieto221', 1, 3, 0) --ID 11
INSERT INTO #TablaAux (IDPadre, Descripcion, Numero, Nivel, Eliminado)
VALUES (7, 'Nieto222', 2, 3, 0) --ID 12
INSERT INTO #TablaAux (IDPadre, Descripcion, Numero, Nivel, Eliminado)
VALUES (8, 'Nieto311', 1, 3, 0) --ID 13
INSERT INTO #TablaAux (IDPadre, Descripcion, Numero, Nivel, Eliminado)
VALUES (8, 'Nieto315', 5, 3, 0) --ID 14
INSERT INTO #TablaAux (IDPadre, Descripcion, Numero, Nivel, Eliminado)
VALUES (8, 'Nieto318', 8, 3, 0) --ID 15
SELECT * FROM #TablaAux
Muchas gracias por adelantado...
Cristian Meneses
Leer las respuestas