Acerca de XML y SQL

04/12/2003 - 18:43 por AnTh_Jc | Informe spam
Holas amigos del foro, tengo un problema
Tengo una estructura de tabla recursiva, como la que sigue:
ESCEI_COD int
ESCEV_NOMBRE varchar
ESCEI_ESTADO int
ESCEI_COD_PADRE int

A la cual le he aplicado la siguiente consulta que me devuelve el siguiente
xml
SELECT ESCENARIO.ESCEI_COD, ESCENARIO.ESCEV_NOMBRE, CASO.ESCEI_COD,
CASO.ESCEV_NOMBRE, CASO.ESCEI_ESTADO, CASO.ESCEI_COD_PADRE
FROM QATRT_ESCENARIO_CASO ESCENARIO, QATRT_ESCENARIO_CASO CASO
WHERE ESCENARIO.ESCEI_COD = CASO.ESCEI_COD_PADRE
AND CASO.ESCEI_ESTADO = 1
FOR XML AUTO

Como ven para un registro puede haber 0 o muchos registros, a lo cual sera
como un padre que tiene 0 o muchos hijos, los registros padres en el campo
ESCEI_COD_PADRE tienen el valor null y en xml "solo" se veran los nodos
padres que tengan por lo menos un nodo hijo.

El resultado se vera como sigue:
<ESCENARIO ESCEI_COD="1" ESCEV_NOMBRE="ESCENARIO PADRE 1">
<CASO ESCEI_COD="11" ESCEV_NOMBRE="CASO HIJO 11" ESCEI_ESTADO="1"
ESCEI_COD_PADRE="1"/>
<CASO ESCEI_COD="25" ESCEV_NOMBRE="CASO HIJO 115" ESCEI_ESTADO="1"
ESCEI_COD_PADRE="1"/>
</ESCENARIO>
<ESCENARIO ESCEI_COD="2" ESCEV_NOMBRE="ESCENARIO PADRE 2">
<CASO ESCEI_COD="26" ESCEV_NOMBRE="CASO HIJO 2-1" ESCEI_ESTADO="1"
ESCEI_COD_PADRE="2"/>
<CASO ESCEI_COD="83" ESCEV_NOMBRE="CASO HIJO 10-3" ESCEI_ESTADO="1"
ESCEI_COD_PADRE="10"/>
</ESCENARIO>
Lo que necesito es añadir una nueva etiqueta con una propiedad como la que
sigue:
<ESCENARIOS count="TotalPadres">
Aqui iria el xml que ya genere en mi consulta anterior
</ESCENARIOS>
donde el "TotalPadres" es la cantidad de etiquetas generadas llamada
"ESCENARIO"
¿Como puedo añadir esa nueva etiqueta <ESCENARIOS count="TotalPadres"> a mi
consulta SQL?
ya no puedo cambiar la consulta, dado que tengo un xsl que me transforma la
consulta

Gracias por su atencion
 

Leer las respuestas

#1 ulises
04/12/2003 - 20:06 | Informe spam
Intenta con

SELECT
ESCENARIO.ESCEI_COD,
ESCENARIO.ESCEV_NOMBRE,
( SELECT count(*) FROM ESC WHERE ESCEI_COD_PADRE =
ESCENARIO.ESCEI_COD ) as COUNT,
CASO.ESCEI_COD,
CASO.ESCEV_NOMBRE,
CASO.ESCEI_ESTADO,
CASO.ESCEI_COD_PADRE
FROM QATRT_ESCENARIO_CASO ESCENARIO LEFT JOIN
QATRT_ESCENARIO_CASO CASO
ON ( ESCENARIO.ESCEI_COD = CASO.ESCEI_COD_PADRE )
AND CASO.ESCEI_ESTADO = 1
FOR XML AUTO

Saludos,
Ulises

Holas amigos del foro, tengo un problema
Tengo una estructura de tabla recursiva, como la que


sigue:
ESCEI_COD int
ESCEV_NOMBRE varchar
ESCEI_ESTADO int
ESCEI_COD_PADRE int

A la cual le he aplicado la siguiente consulta que me


devuelve el siguiente
xml
SELECT ESCENARIO.ESCEI_COD, ESCENARIO.ESCEV_NOMBRE,


CASO.ESCEI_COD,
CASO.ESCEV_NOMBRE, CASO.ESCEI_ESTADO, CASO.ESCEI_COD_PADRE
FROM QATRT_ESCENARIO_CASO ESCENARIO, QATRT_ESCENARIO_CASO


CASO
WHERE ESCENARIO.ESCEI_COD = CASO.ESCEI_COD_PADRE
AND CASO.ESCEI_ESTADO = 1
FOR XML AUTO

Como ven para un registro puede haber 0 o muchos


registros, a lo cual sera
como un padre que tiene 0 o muchos hijos, los registros


padres en el campo
ESCEI_COD_PADRE tienen el valor null y en xml "solo" se


veran los nodos
padres que tengan por lo menos un nodo hijo.

El resultado se vera como sigue:
<ESCENARIO ESCEI_COD="1" ESCEV_NOMBRE="ESCENARIO PADRE 1">
<CASO ESCEI_COD="11" ESCEV_NOMBRE="CASO HIJO 11"


ESCEI_ESTADO="1"
ESCEI_COD_PADRE="1"/>
<CASO ESCEI_COD="25" ESCEV_NOMBRE="CASO HIJO 115"


ESCEI_ESTADO="1"
ESCEI_COD_PADRE="1"/>
</ESCENARIO>
<ESCENARIO ESCEI_COD="2" ESCEV_NOMBRE="ESCENARIO PADRE 2">
<CASO ESCEI_COD="26" ESCEV_NOMBRE="CASO HIJO 2-1"


ESCEI_ESTADO="1"
ESCEI_COD_PADRE="2"/>
<CASO ESCEI_COD="83" ESCEV_NOMBRE="CASO HIJO 10-3"


ESCEI_ESTADO="1"
ESCEI_COD_PADRE="10"/>
</ESCENARIO>
Lo que necesito es añadir una nueva etiqueta con una


propiedad como la que
sigue:
<ESCENARIOS count="TotalPadres">
Aqui iria el xml que ya genere en mi consulta anterior
</ESCENARIOS>
donde el "TotalPadres" es la cantidad de etiquetas


generadas llamada
"ESCENARIO"
¿Como puedo añadir esa nueva etiqueta <ESCENARIOS


count="TotalPadres"> a mi
consulta SQL?
ya no puedo cambiar la consulta, dado que tengo un xsl


que me transforma la
consulta

Gracias por su atencion



.

Preguntas similares