首页 > 解决方案 > SQL 将表组合成单行

问题描述

将表组合成单行的问题。

桌上游戏:

ID player1_ID player2_ID 德斯
11 23 68 某物
82 34 23 任何
302 13 34 嗯嗯嗯嗯

表玩家:

ID 别名
23 吉克斯
34 杰克
68 吉尔
13 约翰

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

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

我也尝试过使用交叉表,

表交叉:

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

但没有结果。

问题是我想要输出中的别名其他玩家数据以及一些额外的棋盘数据,而不必在每个游戏中处理多行。

因此,请求的输出将如下所示:

游戏ID player1_ID player2_ID 德斯 别名1 别名2
11 23 68 某物 吉克斯 吉尔
82 34 23 任何 杰克 吉克斯

我尝试了几种方法,但无法弄清楚。谢谢您的帮助。

标签: sqljoinunion

解决方案


试试这个:

 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

推荐阅读