2014-01-20 33 views
1

所以,我,我與操作的數據庫包含兩個表:SQL服務器級聯值從幾行

Player 
Times 

在前端,從這些表中的數據被組合成像這樣的表:

playerName | Times 
Player1 | 1.0 2.0 4.5 7.5 
Player2 | 1.5 4.3 7.8 2.0 4.5 

因此,只要你可以,玩家可以在該欄中多次。我的問題是獲得這些時間,並將它們連接成一個字段。

db中的兩個表通過ID字段關聯。 Times表包含一個組合鍵,由該ID字段以及該時間的ID組成。即每個單獨的時間是它自己的行。

我怎樣才能抓住每一個這些時間,並將它們連接成一個球員給每個球員?由於玩家表中的其他字段在其他地方使用,我無法爲每個玩家查詢返回多行。這會導致前端顯示多行,這不是一個選項。

回答

3

事情是這樣的:

SELECT P.PlayerName, 
    AT.Times 
FROM Player P 
CROSS APPLY 
(
    SELECT CAST(Time as varchar) + ' ' as [text()] 
    FROM Times T 
    WHERE P.Id = T.PlayerId 
    FOR XML PATH('') 
)AT(Times) 

SQL FIDDLE DEMO

+0

這不會相當的工作,如果時間被存儲爲float。我建議轉換(varchar(20),時間),以確保你得到一個字符串,你可以連接空間。 – Dave

+0

@Dave在演示中已經完成了。謝謝。 –

+0

僅僅是我,還是FOR XML PATH比實際生成XML更經常用於這種事情? – Dave