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
但没有结果。
问题是我想要 aliasses 和 other 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。
将 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 |
但没有结果。
问题是我想要 aliasses 和 other 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。