sql >> データベース >  >> RDS >> Sqlserver

共通の親を共有する複数の選択で構造化されたSQLServer2008からXMLを返す方法

    このようなものを試してください-FORXML PATHを使用します 副選択して、特定の顧客の「リンクされた」サブノードを作成します(これを2つのサブテーブルに制限しましたが、その「要点」を取得して、リンクされたサブテーブルの数に拡張できるようにする必要があります / em> ):

    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. このシナリオでは、複数のテーブルがSQLで結合されます

    2. Mysqlのさまざまな条件からの行を合計する

    3. SQL Server :パラメータに基づいてストアド プロシージャの結果をテーブルに挿入する

    4. MariaDBで日付に日を追加する8つの方法