Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Подскажите с xml  [new]
virtuOS
Member

Откуда: большая деревня
Сообщений: 266
declare @order table ([num] int, [date] datetime)
insert into @order(num, [date]) values(1, '20150201'), (2, '20150202')

declare @Product table ([id] int identity(1,1), idorder int, SvcClassId int, TarId int, instDateTime datetime)
insert into @Product(idorder, SvcClassId, TarId, instDateTime) values(1, 1, 100, '20150210'), (1, 1, 200, '20150211'), (2, 1, 50, '20150212')


SELECT O.Num
		,O.Date

		,(	
			select	P.SvcClassId as [product/@SvcClassId]
					,P.TarId as [product/@TarId]
					,P.instDateTime
			from @Product P
			where P.idorder = O.Num
			for xml path(''),type
		) as products

FROM @order O



Хочется получить такой xml:
<order>
  <Num>1</Num>
  <Date>2015-02-01T00:00:00</Date>
  <products>
    <product SvcClassId="1" TarId="100" >
    <instDateTime>2015-02-10T00:00:00</instDateTime>
	</product>
    <product SvcClassId="1" TarId="200" >
    <instDateTime>2015-02-11T00:00:00</instDateTime>
	</product>
  </products>
</order>
<order>
  <Num>2</Num>
  <Date>2015-02-02T00:00:00</Date>
  <products>
    <product SvcClassId="1" TarId="50" />
    <instDateTime>2015-02-12T00:00:00</instDateTime>
  </products>
</order>
25 фев 15, 10:30    [17308666]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с xml  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
SELECT O.Num
		,O.Date

		,(	
			select	P.SvcClassId as [product/@SvcClassId]
					,P.TarId as [product/@TarId]
					,P.instDateTime
			from @Product P
			where P.idorder = O.Num
			for xml path(''),type
		) as products

FROM @order O
for xml path('order')
25 фев 15, 10:50    [17308778]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с xml  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
и подзапрос еще подправить.
SELECT O.Num
		,O.Date

		,(	
			select	P.SvcClassId as [@SvcClassId]
					,P.TarId as [@TarId]
					,P.instDateTime
			from @Product P
			where P.idorder = O.Num
			for xml path('product'),type
		) as products

FROM @order O
for xml path('order')
25 фев 15, 11:03    [17308869]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с xml  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
> и подзапрос еще подправить.

то есть, если автору все-таки такой вариант нужен:
    <product SvcClassId="1" TarId="100" >
    <instDateTime>2015-02-10T00:00:00</instDateTime>
	</product>


а не такой (этот странно как-то выглядит):
    <product SvcClassId="1" TarId="50" />
    <instDateTime>2015-02-12T00:00:00</instDateTime>
25 фев 15, 11:07    [17308895]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить