2011-04-01 63 views
1

嗨可能有人給我提供一些線索或解決方案來檢索記錄集類似下面檢索XML輸出從SQL Server 2005

注:我讀的MSDN文檔,但使我無處但脫髮:(

剛對於假設想我已經經由Rid字段

表1的字段2個連接表,

Rid,UserName,Hash 

表2字段

Rid,Phone,City,Email 

table1table2經由擺脫場相連。

我想使用XML自動或XML明示或您在SQL Server Express拿到過XML操作2005

產量預計將有一個XML輸出:

<UserDetails> 
    <Account> 
     <UserName></UserName> 
     <Hash></Hash> 
    </Account> 
    <Personal> 
     <Phone1></Phone1> 
     <City1></City1> 
     <Phone2></Phone2> 
     <City2></City2> 
    </Personal> 
</UserDetails> 

的個人資料可以有n個記錄。但帳戶詳細信息只有一個。

+0

所以,你是否將一個'Rid'傳遞給一個程序來爲單個用戶獲取這個輸出,或者你想爲所有用戶提供一個XML? – 2011-04-01 11:17:41

+0

@marc_s我希望它能同時工作。我會通過擺脫單個記錄。如果我想要所有的東西 – Deeptechtons 2011-04-01 11:35:10

回答

1

你可以試試這個 - 我不能做的是創造那些「嵌入式枚舉」

<Phone1></Phone1> 
<City1></City1> 
<Phone2></Phone2> 
<City2></City2> 

我不知道有什麼方法可以輕鬆地使這些按順序編號的XML標籤...

所有我能做的就是我要在結束時顯示輸出:

SELECT 
    t1.UserName AS 'Account/UserName', 
    t1.UserHash AS 'Account/Hash', 
    (SELECT 
     t2.Phone AS 'Phone', 
     t2.City AS 'City' 
    FROM table2 t2 
    WHERE t2.Rid = t1.Rid 
    FOR XML PATH(''), TYPE 
    ) AS 'Personal' 
FROM 
    table1 t1 
FOR XML PATH('UserDetails'), ROOT('Users') 

這給了我一個輸出類似:

<Users> 
    <UserDetails> 
    <Account> 
     <UserName>xxxxx</UserName> 
     <Hash>hhhhhhh</Hash> 
    </Account> 
    <Personal> 
     <Phone>.....</Phone> 
     <City>.....</City> 
     <Phone>..........</Phone> 
     <City>.........</City> 
    </Personal> 
    </UserDetails> 
    <UserDetails> 
    <Account> 
     <UserName>cccccccccccc</UserName> 
     <Hash>hhhhhhhhhhhh</Hash> 
    </Account> 
    <Personal> 
     <Phone>................</Phone> 
     <City>...........</City> 
    </Personal> 
    </UserDetails> 
</Users> 

當然,如果需要,您可以將WHERE t1.rid = xxx條件添加到外部SELECT以限制檢索到的用戶及其詳細信息。

+1

謝謝你的精湛的代碼,請留空。像魅力一樣工作。我會拍攝另一個堆棧以檢查這是否是DBStackExchage的最佳方法。謝謝 – Deeptechtons 2011-04-02 04:19:39