Получить вывод XML из Sql Server 2005 - PullRequest
1 голос
/ 01 апреля 2011

Привет, может, кто-нибудь предоставит мне некоторые подсказки или решение для получения наборов записей, как показано ниже

Примечание: я читаю документацию MSDN, но ни к чему не приводит, кроме выпадения волос: (

Только для предположенияЯ думаю, что у меня есть 2 таблицы, связанные через Rid поле

Поля таблицы 1,

Rid,UserName,Hash

Поля таблицы2

Rid,Phone,City,Email

table1 и table2 подключены через поле Rid.

Я хотел бы получить вывод xml с использованием xml auto или xml явный или какие-либо операции xml, которые вы получили в SQL Server Express 2005.

Ожидаемый результат:

<UserDetails>
    <Account>
        <UserName></UserName>
        <Hash></Hash>
    </Account>
    <Personal>
        <Phone1></Phone1>
        <City1></City1>
        <Phone2></Phone2>
        <City2></City2>
    </Personal>
</UserDetails>

Личные данные могут иметь n записей. Но данные учетной записи только одна.

1 Ответ

1 голос
/ 01 апреля 2011

Вы можете попробовать это - то, что я не могу сделать, это создать эти "встроенные перечисления"

<Phone1></Phone1>
<City1></City1>
<Phone2></Phone2>
<City2></City2>

Я не знаю способа легко сделать эти последовательно пронумерованные теги XML ...

Все, что я могу сделать, это вывод, который я собираюсь показать в конце:

SELECT
    t1.UserName AS 'Account/UserName',
    t1.UserHash AS 'Account/Hash',
    (SELECT
        t2.Phone AS 'Phone',
        t2.City AS 'City'
     FROM table2 t2
     WHERE t2.Rid = t1.Rid
     FOR XML PATH(''), TYPE
    ) AS 'Personal'
FROM
    table1 t1
FOR XML PATH('UserDetails'), ROOT('Users')

Это дает мне что-то вроде:

<Users>
  <UserDetails>
    <Account>
      <UserName>xxxxx</UserName>
      <Hash>hhhhhhh</Hash>
    </Account>
    <Personal>
      <Phone>.....</Phone>
      <City>.....</City>
      <Phone>..........</Phone>
      <City>.........</City>
    </Personal>
  </UserDetails>
  <UserDetails>
    <Account>
      <UserName>cccccccccccc</UserName>
      <Hash>hhhhhhhhhhhh</Hash>
    </Account>
    <Personal>
      <Phone>................</Phone>
      <City>...........</City>
    </Personal>
  </UserDetails>
</Users>

Конечно, еслиВы можете добавить условие WHERE t1.rid = xxx к своему внешнему SELECT, чтобы ограничить пользователя и его извлекаемые данные.

...