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

Mostrar la cita
sigue:
Mostrar la cita
devuelve el siguiente
Mostrar la cita
CASO.ESCEI_COD,
Mostrar la cita
CASO
Mostrar la cita
registros, a lo cual sera
Mostrar la cita
padres en el campo
Mostrar la cita
veran los nodos
Mostrar la cita
ESCEI_ESTADO="1"
Mostrar la cita
ESCEI_ESTADO="1"
Mostrar la cita
ESCEI_ESTADO="1"
Mostrar la cita
ESCEI_ESTADO="1"
Mostrar la cita
propiedad como la que
Mostrar la cita
generadas llamada
Mostrar la cita
count="TotalPadres"> a mi
Mostrar la cita
que me transforma la
Mostrar la cita

Preguntas similares