2015-09-01 5 views
0

У меня проблема с SQLCommand для XML. На самом деле я новичкуЗапись XML с помощью команды SQL

У меня есть 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 
    

Теперь я хочу, чтобы выбрать и создать XML с SQL команды , особенно с «для 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, и я получаю результат. возможно, вы пропустите идентификатор, который представляет SEQ в таблице. есть ли у вас идея? С наилучшими пожеланиями – bneo

+0

Просто попробуйте написать в качестве первой записи вашего выбора «seq AS [@id]», это должно позволить значение seq быть атрибутом верхнего узла с именем «id» ... – Shnugo

+0

спасибо SQLDBA & Shugo. .. – bneo

Смежные вопросы