【问题标题】:Write XML with SQL Command使用 SQL 命令编写 XML
【发布时间】:2015-11-26 08:22:21
【问题描述】:

我对用于 XML 的 SQLCommand 有疑问。其实我是新手

我有 2 张桌子:

  1. Customer_BSM:

    id_Cust |姓名 |奥姆塞特 |颜色 |序列 --------------------------------------------- 1001 |阿里 | 10 |黑色 | 1 2001 |布迪 | 5 |红色 | 2 3001 |查理 | 20 |黄色 | 3
  2. address_BSM:

    id_cust |地址 |没有 1 | 2号 ---------------------------------- 1001 | Jln 1 | 1A | 2A 1001 | Jln 2 | 1B | 2B 2001 |街道 1 | S1 | S2 3001 |帮派|股份公司 | BG

现在,我想用 sql 命令选择和创建 xml,尤其是“for xml”。 sql命令怎么写?

结果,大概是这样的

 <customer_BSM id="1">
     <id_cust>1001<id_cust>
     <Name>Ali</Name>
     <omset>10</omset>
     <colour>black</colour>
     <addres_bsm>
        <address>jln 1</address>
        <no1>1A</no1
        <no2>2A</no2>
     </addres_bsm>
     <addres_bsm>
        <address>jln 2</address>
        <no1>1B</no1
        <no2>2B</no2>
     </addres_bsm>
 </customer_BSM>
 <customer_BSM id="2">
     <id_cust>2001<id_cust>
     <Name>Bhudi</Name>
     <omset>5</omset>
     <colour>red</colour>
     <addres_bsm>
        <address>street 1 </address>
        <no1>S1</no1
        <no2>S2</no2>
     </addres_bsm>
 </customer_BSM>
 <customer_BSM id="3">
     <id_cust>3001<id_cust>
     <Name>Charlie</Name>
     <omset>20</omset>
     <colour>Yellow</colour>
     <addres_bsm>
        <address>gang A</address>
        <no1>AG</no1
        <no2>BG</no2>
     </addres_bsm>
 </customer_BSM>

我使用了这个 SQL 命令,但不起作用

SELECT  *, (
    SELECT * 
    FROM [address_bsm] A INNER JOIN [customer_bsm] B 
    ON a.id_cust = b.id_cust
    FOR XML PATH ('Address_bsm')) 
FROM [customer_bsm]
FOR XML PATH

其实结果和我的目的不一样。

【问题讨论】:

    标签: mysql sql xml sqlcommand


    【解决方案1】:

    我只能使用 MSSQL 进行测试,但 SQL 应该非常相似。

    SELECT c.[id_Cust]
          ,[Name]
          ,[Omset]
          ,[Colour]
          ,[seq]
          ,(SELECT a.[Address],a.[no1],a.[no2] FROM address_BSM a
          WHERE a.id_cust = c.id_cust
      FOR XML PATH ('address_bsm'), TYPE)
      FROM [dbo].[Customer_BSM] c
      FOR XML PATH ('customer_bsm')
    

    【讨论】:

    • 感谢您的回答.. 我在 MS SQL 中尝试了您的代码,我得到了结果。也许你错过了代表表中 SEQ 的 ID。你有想法吗?最好的问候
    • 试着写成你选择的“seq AS [@id]”的第一个条目,这应该让seq的值成为名为“id”的顶部节点的属性......跨度>
    • 我没有将 ID 视为属性。我不知道该怎么做,所以也感谢 Shungo!
    猜你喜欢
    • 1970-01-01
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-07
    • 2018-02-03
    • 1970-01-01
    • 2020-07-21
    相关资源
    最近更新 更多