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

Откуда:
Сообщений: 88
Есть XML вида:
<entity name = "entity1">
  <innerXml>
    <permission>
      <items>
        <item name = "item1"/>
        <item name = "item2"/>
        <item name = "item3"/>
        <item name = "item4"/>
      </items> 
    </permission>
  </innerXml>
</entity >
<entity name = "entity2">
  <innerXml>
    <permission>
      <items>
        <item name = "item2"/>
        <item name = "item3"/>
        <item name = "item8"/>
        <item name = "item4"/>
      </items> 
    </permission>
  </innerXml>
</entity >

Чтобы получить список всех entity, использую запрос:
SELECT distinct nref.value('@name', 'varchar(max)') PermissionName
FROM   MyTable CROSS APPLY MyXmlField.nodes('//entity') AS R(nref)

Чтобы получить список всех permission(в виде Xml), использую запрос:
SELECT MyXmlField.query('//entity/innerXml/permission') 
FROM   MyTable 

Как сделать, чтобы вывести набор данных из двух полей, entity(varchar) и permission(xml)?
28 июл 09, 14:35    [7469006]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать VARCHAR и XML колонки  [new]
daw
Member

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

> Чтобы получить список всех entity, использую запрос:
>
> SELECT distinct nref.value('@name','varchar(max)') PermissionName
> FROM MyTableCROSS APPLY MyXmlField.nodes('//entity')AS R(nref)

а зачем distinct ?

> Как сделать, чтобы вывести набор данных из двух полей, entity(varchar) и
> permission(xml)?

permission только для данного entity?

Posted via ActualForum NNTP Server 1.4

28 июл 09, 15:22    [7469456]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать VARCHAR и XML колонки  [new]
moogle
Member

Откуда:
Сообщений: 88
daw

> Чтобы получить список всех entity, использую запрос:
>
> SELECT distinct nref.value('@name','varchar(max)') PermissionName
> FROM MyTableCROSS APPLY MyXmlField.nodes('//entity')AS R(nref)

а зачем distinct ?

> Как сделать, чтобы вывести набор данных из двух полей, entity(varchar) и
> permission(xml)?

permission только для данного entity?


да, каждому entity соответствует один permission
28 июл 09, 15:37    [7469554]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать VARCHAR и XML колонки  [new]
daw
Member

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

> да, каждому entity соответствует один permission

так?
SELECT
   nref.value('@name', 'varchar(max)') PermissionName
   , nref.query('innerXml/permission')
FROM   MyTable CROSS APPLY MyXmlField.nodes('//entity') AS R(nref)

Posted via ActualForum NNTP Server 1.4

28 июл 09, 16:38    [7470089]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать VARCHAR и XML колонки  [new]
moogle
Member

Откуда:
Сообщений: 88
daw

> да, каждому entity соответствует один permission

так?
SELECT
   nref.value('@name', 'varchar(max)') PermissionName
   , nref.query('innerXml/permission')
FROM   MyTable CROSS APPLY MyXmlField.nodes('//entity') AS R(nref)


спасибо! то что нужно. оказалось довольно просто
28 июл 09, 16:54    [7470237]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить