Northwind を使用して、Google マップ アプリケーションの実際のデータで必要になると思われる SQL をモデル化しています。クエリは適切に機能していると思いますが、XML で返されると、階層が必要な方法ではありません。
SELECT Marker.CustomerID
,Marker.CompanyName
,Marker.TotalAmount
,o.OrderID
,o.Freight
FROM
(
SELECT c.CustomerID
,c.CompanyName
,c.Address
,COUNT(o.freight) as TotalOrders
,SUM(o.freight) as TotalAmount
FROM Customers c
INNER JOIN Orders o
ON c.CustomerID = o.CustomerID
where c.CustomerID = 'ALFKI' or c.CustomerID = 'ANTON'
group by c.CustomerID
,c.CompanyName
,c.Address
) AS Marker
INNER JOIN Orders o
ON Marker.CustomerID = o.CustomerID
where Marker.CustomerID = 'ALFKI' or Marker.CustomerID = 'ANTON'
order by 1
for xml auto, root('root')
返される XML は次のとおりです。
<root>
<c CustomerID="ALFKI" CompanyName="Alfreds Futterkiste">
<Marker TotalAmount="225.5800">
<o OrderID="10643" Freight="29.4600" />
<o OrderID="10692" Freight="61.0200" />
<o OrderID="10702" Freight="23.9400" />
<o OrderID="10835" Freight="69.5300" />
<o OrderID="10952" Freight="40.4200" />
<o OrderID="11011" Freight="1.2100" />
</Marker>
</c>
<c CustomerID="ANTON" CompanyName="Antonio Moreno Taquería">
<Marker TotalAmount="268.5200">
<o OrderID="10365" Freight="22.0000" />
<o OrderID="10507" Freight="47.4500" />
<o OrderID="10535" Freight="15.6400" />
<o OrderID="10573" Freight="84.8400" />
<o OrderID="10677" Freight="4.0300" />
<o OrderID="10682" Freight="36.1300" />
<o OrderID="10856" Freight="58.4300" />
</Marker>
</c>
</root>
cを顧客テーブルのエイリアスとして使用するサブクエリは、XML では不要です。まだ、注文と顧客の両方にあるため、CustomerIDがあいまいになるため、必要なようです。以下のモックアップのように、マーカー内でoのみを表示する方法を知りたいです。
<root>
<Marker CustomerID="ALFKI" CompanyName="Alfreds Futterkiste" TotalAmount="225.5800">
<o OrderID="10643" Freight="29.4600" />
<o OrderID="10692" Freight="61.0200" />
<o OrderID="10702" Freight="23.9400" />
<o OrderID="10835" Freight="69.5300" />
<o OrderID="10952" Freight="40.4200" />
<o OrderID="11011" Freight="1.2100" />
</Marker>