У меня есть этот запрос SQL:
DECLARE @xmldata XML
SET @xmldata =
(
SELECT
DeporteID = Deporte.ID_Deporte,
Deporte.Nombre,
CategoriaID = Categoria.ID_Categoria,
Categoria.Nombre,
EventoID = Evento.ID_Juego,
Evento.Nombre,
Fecha = Evento.FechaJuego,
Hora = CONVERT(CHAR(8), Evento.HoraJuego, 108),
VisitanteID = Visitante.ID_Equipo,
Visitante.Nombre,
HomeclubID = Homeclub.ID_Equipo,
Homeclub.Nombre
FROM
DP01 Deporte
INNER JOIN
CA01 Categoria
INNER JOIN
JU01 Evento
INNER JOIN
CON01 CONV
INNER JOIN
EQ01 Visitante ON Visitante.ID_Equipo = CONV.ID_Equipo
ON CONV.ID_Juego = Evento.ID_Juego AND CONV.Homeclub = 0
INNER JOIN
CON01 CONH
INNER JOIN
EQ01 Homeclub ON Homeclub.ID_Equipo = CONH.ID_Equipo
ON CONH.ID_Juego = Evento.ID_Juego AND CONH.Homeclub = 1
ON Evento.ID_Categoria = Categoria.ID_Categoria
ON Categoria.ID_Deporte = Deporte.ID_Deporte
WHERE
Evento.FechaJuego = dbo.fnHoy()
AND Deporte.ID_Deporte = 1
ORDER BY
Deporte.Orden, CategoriaID, Fecha, Hora, EventoID
FOR XML AUTO
)
SELECT @xmldata AS returnXml
и вот результат:
<Deporte DeporteID="1" Nombre="FOOTBALL">
<Categoria CategoriaID="240" Nombre="NFL">
<Evento EventoID="1013695" Nombre="La Rams vs New Orleans" Fecha="2019-01-20" Hora="15:00:00">
<Visitante VisitanteID="1003166" Nombre="LOS ANGELES RAMS">
<Homeclub HomeclubID="1003170" Nombre="NEW ORLEANS SAINTS" />
</Visitante>
</Evento>
<Evento EventoID="1013696" Nombre="New England vs Kansas City" Fecha="2019-01-20" Hora="18:40:00">
<Visitante VisitanteID="1003169" Nombre="NEW ENGLAND PATRIOTS">
<Homeclub HomeclubID="1003164" Nombre="KANSAS CITY CHIEFS" />
</Visitante>
</Evento>
</Categoria>
</Deporte>
Я хочу знать, почему узел <Homeclub>
находится внутри узла <Visitante>
и как этого избежать. Вы можете видеть, что тег Homeclub обрабатывается как закрытый тег, и оба узла пришли из внутренних объединений в одну таблицу с использованием псевдонимов.