Como crear esta salida? Please!!!!!

25/11/2003 - 22:25 por Yo | Informe spam
Hola a todos!!!!!!!

Tengo los siguientes datos en una tabla:

ID1 ID2 Niv
01 0 1
02 01 2
03 01 2
04 02 3
05 02 3
06 01 2
07 06 3
08 07 4
09 01 2
10 01 2
11 0 1
12 11 2
13 12 3
14 11 2
15 14 3
16 11 2
17 11 2
18 17 3
19 17 3
20 18 4

Y necesito obtener la siguiente salida a una consulta
(Select o Procedimiento Almacenado con cursores)

Primero deben aparecer los registros con ID2 = 0,
ID1 es un identificador Unico, ID2 corresponde
un subnivel del registro que tiene el mismo valor
en ID1.

ID1 ID2 Niv
01 0 1
02 01 2
04 02 3
05 02 3
03 01 2
06 01 2
07 06 3
08 07 4
09 01 2
10 01 2
11 0 1
12 11 2
13 12 3
14 11 2
15 14 3
16 11 2
17 11 2
18 17 3
20 18 4
19 17 3

Cual seía el query que debo hacer para, a partir de los
datos obtener la salida mostrada??

Gracias.
Atte.
Yo.
 

Leer las respuestas

#1 Javier Loria
26/11/2003 - 00:15 | Informe spam
Hola:
Si la cantidad de niveles es conocida (en esta caso 4 niveles)
podrias hacer:
SELECT A1.ID1, A1.ID2,A1.Niv
FROM Arbol A1
LEFT JOIN Arbol A2
ON A1.ID2¢.ID1
LEFT JOIN Arbol A3
ON A2.ID2£.ID1
LEFT JOIN Arbol A4
ON A3.ID2¤.ID1
ORDER BY
LTRIM(COALESCE(A4.ID1,'')+COALESCE( A3.ID1,'')+COALESCE( A2.ID1,'')+A1.ID1)

Si la cantidad de niveles NO es conocida podrias hacer un CICLO llenar
una tabla temporal, no es necesario el cursor.
Si es algo que vas a hacer con frequencia y requieres "logica para
arboles", podrias revisar las estructuras de JOE CELKO para arboles. En
GOOGLE encuentas bastante documentacion eso si en Ingles.
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
Yo escribio:
Hola a todos!!!!!!!

Tengo los siguientes datos en una tabla:

ID1 ID2 Niv
01 0 1
02 01 2
03 01 2
04 02 3
05 02 3
06 01 2
07 06 3
08 07 4
09 01 2
10 01 2
11 0 1
12 11 2
13 12 3
14 11 2
15 14 3
16 11 2
17 11 2
18 17 3
19 17 3
20 18 4

Y necesito obtener la siguiente salida a una consulta
(Select o Procedimiento Almacenado con cursores)

Primero deben aparecer los registros con ID2 = 0,
ID1 es un identificador Unico, ID2 corresponde
un subnivel del registro que tiene el mismo valor
en ID1.

ID1 ID2 Niv
01 0 1
02 01 2
04 02 3
05 02 3
03 01 2
06 01 2
07 06 3
08 07 4
09 01 2
10 01 2
11 0 1
12 11 2
13 12 3
14 11 2
15 14 3
16 11 2
17 11 2
18 17 3
20 18 4
19 17 3

Cual seía el query que debo hacer para, a partir de los
datos obtener la salida mostrada??

Gracias.
Atte.
Yo.

Preguntas similares