Гость
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Перебор вложенных секций (MSSQL+XML) / 3 сообщений из 3, страница 1 из 1
24.01.2017, 15:15
    #39390343
f50
f50
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебор вложенных секций (MSSQL+XML)
Коллеги, подскажите, как перебрать вложенные секции. Сейчас читается только первая встретившаяся секция.
Если сделать новым запросом, с указанием нового "корня" в параметрах OPENXML, то тоже нет проблем... Просто под каждую секцию писать таблицу для хранения не хочется. Т.е. в моем случае, пусть Иванов дублируется 3 раза не проблема.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
begin
DECLARE @orders xml =
'<Orders>
 <Order>
  <Customer>Василий</Customer>
 </Order>
 <Order>
  <Customer>Петров</Customer>
 </Order>
 <Order>
  <Customer>Иванов</Customer>
  <dopparam>
	<idval>102</idval>
	<val>Сантехник</val>
  </dopparam>
  <dopparam>
	<idval>103</idval>
	<val>Водитель</val>
  </dopparam>
  <dopparam>
	<idval>104</idval>
	<val>Домохозяин</val>
  </dopparam>
 </Order>
</Orders>';

DECLARE @docHandle int;
EXECUTE sp_xml_preparedocument @docHandle OUTPUT, @orders
SELECT * FROM OPENXML(@docHandle, N'/Orders/Order')
  WITH
  (
    Customer nvarchar(128) 'Customer',
	idval int 'dopparam/idval',
	val nvarchar(50) 'dopparam/val'
  )
EXECUTE sp_xml_removedocument @docHandle;
end
GO



Сейчас так:
CustomeridvalvalВасилийNULLNULLПетровNULLNULLИванов102 Сантехник

Хотелось бы так:
CustomeridvalvalВасилийNULLNULLПетровNULLNULLИванов102 СантехникИванов103ВодительИванов104 Домохозяин

Заранее благодарю!
...
Рейтинг: 0 / 0
25.01.2017, 13:25
    #39391062
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебор вложенных секций (MSSQL+XML)
Нужно делать два селекта - /Orders/Order и /Orders/Order/dopparam и джойнить их по Customer.

или /Orders/Order/Customer и /Orders/Order/dopparam
...
Рейтинг: 0 / 0
25.01.2017, 19:59
    #39391552
f50
f50
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебор вложенных секций (MSSQL+XML)
Antonariy, спасибо, понял!
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Перебор вложенных секций (MSSQL+XML) / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]