2

次の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形式で取得したいので、geography列をキャストする必要があったため、最初の行を次のように変更しました。

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

そして最後にこの行を追加しました:

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

今、私はXMLを取得していますが、Table2からのデータのみを使用しています。
どんなアドバイスでも大歓迎です。

4

1 に答える 1

0

もちろん、他のテーブルのデータを表示する場合は、このようにこれらの列を選択する必要があります。IOは通常MYSQLを使用するため、これは私が通常使用する方法ですが、Oracleまたは他のデータベースを使用している場合は、適切なエイリアス名を選択して、必要なカスタム列を表示する必要があります。SQLServerを使用した結合の基本的な例はこちらをご覧ください。

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
于 2012-03-29T08:44:32.763 に答える