2012-12-08 38 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 
相关问题