0

我有以下表格的:m 关系:

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;

这将为里面的每个条目返回一个 Row GamePlayer。如果我有两个游戏,每个游戏有三个玩家,这个查询将返回 6 行,其中包含游戏和玩家的名称(显然只有两个不同的游戏名称),如下所示:

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

我喜欢(在这种情况下)两行看起来像这样:

GameName1   John   Dan   Phil
GameName2   Dan    Pete  Kate

这有可能吗?

注意:一个游戏中可能有超过三个玩家

4

1 回答 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
于 2012-12-08T09:39:16.070 回答