2015-09-01 27 views
0

我对SQLCommand for XML有问题。其实我新手使用SQL命令编写XML

我有2个表:

  1. Customer_BSM

     
    id_Cust | Name | Omset | Colour | seq 
    --------------------------------------------- 
    1001 | Ali  | 10  | Black | 1 
    2001 | Bhudi | 5  | Red  | 2 
    3001 | charlie | 20  | yellow | 3 
    
  2. address_BSM

     
    id_cust | Address | no1 | no2 
    ----------------------------------- 
    1001 | Jln 1 | 1A  | 2A 
    1001 | Jln 2 | 1B  | 2B 
    2001 | street 1 | S1  | S2 
    3001 | gang A | AG  | 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 

其实,结果还是一样不跟我的目的。

回答

0

我只能用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') 
+0

谢谢你的回答..我在MS SQL中尝试你的代码,并且我得到了结果。也许你想念ID,代表表中的SEQ。有你和想法吗?最好的问候 – bneo

+0

只是尝试写入您的选择“seq AS [@id]”的第一个条目,这应该让seq的值成为名为“id”的顶级节点的归属... – Shnugo

+0

谢谢SQLDBA&Shugo。 .. – bneo