mysql - 不同用户在同一张表上进行多个联接

标签 mysql database

我有一个纸牌游戏。每个房间有 4 名玩家玩。我的数据库(MySQL)中有 2 个表,如下所示:

表 1:“房间”

id: Int
playerid1: Int
playerid2: Int
playerid3: Int
playerid4: Int

表 2:“玩家”

id: Int
name: Varchar
picture: varchar

我想做的是返回查询中的所有房间并同时获取玩家图片。通过加入获得单个玩家的图片很容易,但我如何同时为所有 4 个玩家做到这一点?

结果应该是这样的:

id = 123
playerid1 = 1
playerid2 = 2
playerid3 = 3
playerid4 = 4
playerpic1 = "one.jpg"
playerpic2 = "two.jpg"
playerpic3 = "three.jpg"
playerpic4 = "four.jpg"

提前致谢

最佳答案

您需要将表 roomsplayers 进行 4 次连接:

select r.id,
  p1.id, p1.picture,
  p2.id, p2.picture,
  p3.id, p3.picture,
  p4.id, p4.picture
from rooms r
inner join players p1 on p1.id = r.playerid1
inner join players p2 on p2.id = r.playerid2
inner join players p3 on p3.id = r.playerid3
inner join players p4 on p4.id = r.playerid4

关于mysql - 不同用户在同一张表上进行多个联接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56309425/

相关文章:

mysql - 在mysql中的case语句中设置变量

MySQL & 嵌套集 : slow JOIN (not using index)

php - 加快laravel查询速度[解决]

mysql - Wordpress - 为电子邮件创建自定义简码

android - 运行方式包 : not debuggable

sql - 存储历史数据的数据库结构

node.js - 在 Node 中存储 mongoDB 的收集结果

mysql - 从 SQL View 中选择 JSON 数组的字段以创建列

java - 如何在 ResultSet 的映射中存储多个值(超过 2 个),类似于 HashMap?

php - 使用php,mysql在android中使用参数搜索和检索表值