mysql - 不同用户在同一张表上的多个联接
问题描述
我有一个纸牌游戏。每个房间有 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"
提前致谢
解决方案
您需要 4 个表rooms
连接players
:
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
推荐阅读
- rest - 如何将数据从 BMC Remedy 推送到 Spring Boot 应用程序?
- google-apps-script - 如何使用基于时间的触发器每小时运行一个脚本,仅在工作日的每小时运行一次?
- .net - 从 .Net Core 2.0 Web 应用程序中的 apppsettings.json 文件中读取值
- oracle - 如何在 oracle 中删除计算日期的周末
- curl - Ubuntu 18、VPN 和 DNS:curl 无法解析 VPN-host,但 nslookup 和 dig 可以
- python - serial.tools.list_ports.comports() 只返回一项
- angular - 无法在 WebStorm 2019.1 中调试 Angular 应用程序
- javascript - WebAssembly.instantiate 在嵌入的 v8 中没有调用,也没有捕获
- flutter - 从 appbar.actions 触发 StatefulWidget 更改
- google-apps-script - 在 Google Docs 中捕获文档更改或自动保存的事件