Выбор из двух таблиц в XML - PullRequest
2 голосов
/ 29 марта 2012

Я пытаюсь выполнить следующий SQL:

SELECT * FROM Table2
INNER JOIN
    (SELECT * FROM Table1
    INNER JOIN
    (SELECT MAX(DateTime) AS LastMeasurement, MeasurementId as LastMeasurementId
    FROM Table1 GROUP BY MeasurementId) as lastMeasurement
    ON (Table1.MeasurementId = lastMeasurement.LastMeasurementId) 
    AND (Table1.DateTime = lastMeasurement.LastMeasurement)) as hLastMeasurement
ON Table2.Id = hLastMeasurement.Id
ORDER BY Table2.Id ASC

Это прекрасно работает, но, поскольку я хочу получить результат в формате XML и должен был привести столбец географии, я изменил первую строку на:

SELECT Name, Description, CAST(Location as nvarchar(MAX)) FROM Table2

и добавил эту строку в конец:

FOR XML RAW ('Object'), ROOT ('Objects'), ELEMENTS

Теперь я получаю XML, но только с данными из Таблицы 2.
Любой совет будет приветствоваться.

1 Ответ

0 голосов
/ 29 марта 2012

Очевидно, что если вы хотите отобразить данные из других таблиц, то вы должны выбрать эти столбцы следующим образом.В IO обычно используется MYSQL, поэтому я обычно так и использую. Но если вы используете oracle или другую базу данных, вам нужно выбрать правильные псевдонимы для отображения пользовательских столбцов, которые вы хотите.* здесь

SELECT Table2.Name,Table2.Description,lastMeasurement.MeasurementId 

FROM Table2 t2
    INNER JOIN
        (SELECT * FROM Table1
        INNER JOIN
        (SELECT MAX(DateTime) AS LastMeasurement, MeasurementId as LastMeasurementId
        FROM Table1 GROUP BY MeasurementId) as lastMeasurement
        ON (Table1.MeasurementId = lastMeasurement.LastMeasurementId) 
        AND (Table1.DateTime = lastMeasurement.LastMeasurement)) as hLastMeasurement
    ON Table2.Id = hLastMeasurement.Id
    ORDER BY Table2.Id ASC
...