Ayuda con consulta "ciclica"

27/07/2005 - 21:38 por SergioT | Informe spam
Hola

Tengo una tabla asi:

Cod descipcion CodPadre
1 Linea de items A 0
11 Sub Linea de A 1
111 Sub-Sub Linea de A 11
1111 Item verde 111
1112 Item Blanco 111
1113 Item Rojo 111
2 Linea de Items B 0
21 Sub linea de B 2
211 Item B-negro 21
212 Item B-Azul 21

Resulta que los niveles son variables y necesito construir una tabla asi:

Padre Padre1 Padre2 Padre3 Cod Item
0 0 0 0 1 Linea de
items A
0 0 0 1 11 Sub Linea
de A
0 0 1 11 111 Sub-Sub Linea
de A
0 1 11 111 1111 Item Verde
0 1 11 111 1112 Item Blanco
0 1 11 111 1113 Item Rojo
0 0 0 0 2 Linea de
items B
0 0 0 2 21 Sub Linea
de B
0 0 2 21 211 Item B-negro
0 0 2 21 212 Item B-Azul

Por tanto he logrado hacer una consulta que obtiene el resultado pero no me
gusta por que limita la cantidad de niveles posibles es algo así:

SELECT T.Cod,T.Descripcion, T, T1.cod,T2.Cod,T3.Cod,
T1.Descripcion,T2.Descripcion,T3.Descripcion
FROM T left join ( select * from T ) T1
ON T.Padre=T1.Cod
LEFT JOIN ( select * from T ) T2
ON T1.Padre=T2.cod
LEFT JOIN ( select * from T ) T3
ON T2Padre=T3cod

Hay alguna otra forma de hacerlo de manera que las columnas del resultado
sean variables???? o alguna otra manera que aunque limite la cantidad de
columanas resultantes ( igual a como lo tengo) sea mas optima???

Necesito esto por culpa del CrystalReports ya que necesito tener los cortes
de control en el reporte y para cada corte de control se necesita un campo.
O si saben de alguna otra forma de resolver liustados jerarquicos les
agradeceria me den ideas

GRACIAS POR SU TIEMPO
Salu2
Sergio
 

Leer las respuestas

#1 Maxi
27/07/2005 - 22:23 | Informe spam
Hola, ufff en sql 2005 esto lo puedes hacer de forma muy simple :-) pero en
sql 2000 es bastante complicado. Te recomiendo que vayas al portal de Miguel
(www.portalsql.com) donde encontraras temas relacionados a Pivot Tables

Un abrazo


Salu2
Maxi


"SergioT" escribió en el mensaje
news:
Hola

Tengo una tabla asi:

Cod descipcion CodPadre
1 Linea de items A 0
11 Sub Linea de A 1
111 Sub-Sub Linea de A 11
1111 Item verde 111
1112 Item Blanco 111
1113 Item Rojo 111
2 Linea de Items B 0
21 Sub linea de B 2
211 Item B-negro 21
212 Item B-Azul 21

Resulta que los niveles son variables y necesito construir una tabla asi:

Padre Padre1 Padre2 Padre3 Cod Item
0 0 0 0 1 Linea
de items A
0 0 0 1 11 Sub Linea
de A
0 0 1 11 111 Sub-Sub
Linea de A
0 1 11 111 1111 Item Verde
0 1 11 111 1112 Item Blanco
0 1 11 111 1113 Item Rojo
0 0 0 0 2 Linea de
items B
0 0 0 2 21 Sub Linea
de B
0 0 2 21 211 Item B-negro
0 0 2 21 212 Item B-Azul

Por tanto he logrado hacer una consulta que obtiene el resultado pero no
me gusta por que limita la cantidad de niveles posibles es algo así:

SELECT T.Cod,T.Descripcion, T, T1.cod,T2.Cod,T3.Cod,
T1.Descripcion,T2.Descripcion,T3.Descripcion
FROM T left join ( select * from T ) T1
ON T.Padre=T1.Cod
LEFT JOIN ( select * from T ) T2
ON T1.Padre=T2.cod
LEFT JOIN ( select * from T ) T3
ON T2Padre=T3cod

Hay alguna otra forma de hacerlo de manera que las columnas del resultado
sean variables???? o alguna otra manera que aunque limite la cantidad de
columanas resultantes ( igual a como lo tengo) sea mas optima???

Necesito esto por culpa del CrystalReports ya que necesito tener los
cortes de control en el reporte y para cada corte de control se necesita
un campo. O si saben de alguna otra forma de resolver liustados
jerarquicos les agradeceria me den ideas

GRACIAS POR SU TIEMPO
Salu2
Sergio




Preguntas similares