SQL Server FOR XML Shape с несколькими внутренними объединениями в одной таблице - PullRequest
0 голосов
/ 20 января 2019

У меня есть этот запрос 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 обрабатывается как закрытый тег, и оба узла пришли из внутренних объединений в одну таблицу с использованием псевдонимов.

...