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;

これにより、内の各エントリの行が返されGamePlayerます。それぞれ3人のプレーヤーがいる2つのゲームがある場合、このクエリは、ゲームとプレーヤーの名前(明らかに2つの異なるゲーム名しかない)の6行を返します。これは次のようになります。

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

私は(この場合)次のように見える2つの行を持つのが好きです:

GameName1   John   Dan   Phil
GameName2   Dan    Pete  Kate

これはどういうわけか可能ですか?

注:ゲームには3人以上のプレーヤーがいる場合があります

4

1 に答える 1

1

データに基づいて列を作成するには、SQLite にはないある種のピボット関数が必要になります。

できることは、group_concatを使用して複数の値を 1 つの列の値にマージすることです。

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 に答える