Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да върна XML от SQL Server 2008, който е структуриран с множество селекции, споделящи общ родител

Опитайте нещо подобно - използва FOR XML PATH и подизбира за създаване на „свързаните“ подвъзли за даден клиент (Ограничих това до две подтаблици – но трябва да разберете „същината“ от това и да можете да го разширите до произволен брой свързани подтаблици ):

SELECT
    CustomerID AS '@CustomerID',
    CustName AS '@Name',

    (SELECT ProductName AS '@productname'
     FROM dbo.Products p
     WHERE p.CustomerID = c.CustomerID  
     FOR XML PATH('Product'), TYPE) AS 'Products',

    (SELECT HobbyName AS '@hobbyname'
     FROM dbo.Hobbies h 
     WHERE h.CUstomerID = c.CustomerID
     FOR XML PATH('Hobby'), TYPE) AS 'Hobbies'
FROM
    dbo.Customers c
FOR XML PATH('Customer'), ROOT('Customers')

Дава ми резултат нещо като:

<Customers>
  <Customer CustomerID="1" Name="Fred">
    <Products>
      <Product productname="Table" />
      <Product productname="Wardrobe" />
      <Product productname="Chair" />
    </Products>
    <Hobbies>
      <Hobby hobbyname="Golf" />
      <Hobby hobbyname="Swimming" />
    </Hobbies>
  </Customer>
  <Customer CustomerID="2" Name="Sue">
    <Products>
      <Product productname="CD Player" />
      <Product productname="Picture frame" />
    </Products>
    <Hobbies>
      <Hobby hobbyname="Dancing" />
      <Hobby hobbyname="Gardening" />
      <Hobby hobbyname="Reading" />
    </Hobbies>
  </Customer>
</Customers>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Създайте изглед в множество бази данни

  2. Как да задам и индексирам две колони на T-SQL декларирана променлива на таблица?

  3. Как да промените колона, без да изпускате таблица в SQL 2008

  4. Cross join Sql Query

  5. Как да върнете всички ненадеждни ограничения на външния ключ в SQL Server (пример за T-SQL)