SQL 将表格合并为单行

SQL combining tables to single rows

将 table 组合成单行时出现问题。

TABLE 游戏:

ID player1_ID player2_ID des
11 23 68 something
82 34 23 whatever
302 13 34 mmmmmmmm

TABLE 球员:

ID alias
23 Jeex
34 Jack
68 Jill
13 John

我开始查询的关键字是玩家 ID 之一。

我想显示Player ID=23正在玩的所有游戏。可以是Player1或Player2。

我也试过十字table,

TABLE 交叉:

ID player_ID game_ID
1 23 11
2 68 11
3 34 82
2 23 82
3 13 302
3 34 302

但没有结果。

问题是我想要 aliassesother players data 在输出中以及 some额外的棋盘数据,而不必在每场比赛中处理多行。

因此,请求的输出如下:

game_ID player1_ID player2_ID des alias1 alias2
11 23 68 something Jeex Jill
82 34 23 whatever Jack Jeex

我尝试了几种方法,但无法解决这个问题。感谢您的帮助。

试试这个:

 SELECT g.*, p1.alias AS alias1, p2.alias AS alias2 FROM games g
 JOIN players p1 ON p1.id = g.player1_ID
 JOIN players p2 ON p2.id = g.player2_ID

您必须将games连接到players的2个副本,这样您就可以在WHERE子句中获取别名和过滤器games以仅获取行对于您想要的播放器:

SELECT g.*, 
       p1.alias alias1,
       p2.alias alias2 
FROM games g
INNER JOIN players p1 ON p1.id = g.player1_ID
INNER JOIN players p2 ON p2.id = g.player2_ID
WHERE ? IN (g.player1_ID, g.player2_ID)

? 更改为您想要的玩家 ID。