2012-12-08 66 views
0

我有一個N:下表m的關係:SQLite可能將匹配的行加入到一個行中?

Game 
    g_id 
    g_name 

Player 
    p_id 
    p_name 

GamePlayer 
    gp_id 
    gp_p_id 
    gp_g_id 

和查詢這樣的:

SELECT g_name, p_name 
FROM GamePlayer 
INNER JOIN Game ON g_id = gp_g_id 
INNER JOIN Player ON p_id = gp_p_id; 

這將返回一排內GamePlayer每個條目。如果我有每三名球員兩場比賽,這個查詢將返回6行與遊戲的名稱和播放器(其中有明顯的只有兩種不同的遊戲名稱),它看起來像這樣:

GameName1 John 
GameName1 Dan 
GameName1 Phil 
GameName2 Dan 
GameName2 Pete 
GameName2 Kate 

我喜歡有(在這種情況下)兩行看起來像這樣:

GameName1 John Dan Phil 
GameName2 Dan Pete Kate 

這是不知何故可能?

注: 有可能是在遊戲

+1

爲什麼「左加入」? –

回答

1

創建基於數據將需要某種形式的旋轉功能,這SQLite沒有列三個以上的玩家。

你可以做的是使用group_concat多個值合併成一個值:

SELECT g_name, 
     group_concat(p_name) 
FROM Game 
JOIN GamePlayer ON g_id = gp_g_id 
JOIN Player ON gp_p_id = p_id 
GROUP BY g_name 
相關問題