mysql查询表联接

mysql查询表联接,mysql,join,Mysql,Join,我用以下字段设置了两个表、游戏和用户: tblGAMES--> GAME_ID (int) primary key, P1_ID (int), P2_ID (int), P3_ID (int), P4_ID (int) tblUSERS--> USER_ID (int) primary key, FIRST_NAME (text), LAST_NAME (text) 我正在查询我的数据库以打印出每一个游戏行的详细信息。例如: GAME_ID:1, P1:1, P2:2, P3:3

我用以下字段设置了两个表、游戏和用户:

tblGAMES-->
GAME_ID (int) primary key,
P1_ID (int),
P2_ID (int),
P3_ID (int),
P4_ID (int)

tblUSERS-->
USER_ID (int) primary key,
FIRST_NAME (text),
LAST_NAME (text)
我正在查询我的数据库以打印出每一个游戏行的详细信息。例如:

GAME_ID:1, P1:1, P2:2, P3:3, P4:4
但是,我不想打印存储在tblGAMES中的id,而是想打印每个玩家的名字,因为它出现在tblUSERS中相应的行中。与使用多个查询相比,使用单个查询是否可行

end result-->GAME_ID:1, P1:David, P2:Paul, P3:John, P4:Bobby

您需要加入users表4次

select g.GAME_ID, 
       u1.FIRST_NAME as ulname, 
       u2.FIRST_NAME as u2name, 
       u3.FIRST_NAME as u3name, 
       u4.FIRST_NAME as u4name
from tblGAMES as g 
  left join tblUSERS as u1 on g.P1_ID =u1.USER_ID 
  left join tblUSERS as u2 on g.P2_ID =u2.USER_ID 
  left join tblUSERS as u3 on g.P3_ID =u3.USER_ID 
  left join tblUSERS as u4 on g.P4_ID =u4.USER_ID 

(未测试)

在查询中,您希望每个
JOIN
引用
tblUSERS
一次。大概是这样的:

SELECT
    tblGAMES.GAME_ID,
    tblUSER1.FIRST_NAME AS P1,
    tblUSER2.FIRST_NAME AS P2,
    tblUSER3.FIRST_NAME AS P3,
    tblUSER4.FIRST_NAME AS P4
FROM tblGAMES
    INNER JOIN tblUSERS AS tblUSER1 ON tblGAMES.P1_ID = tblUSER1.USER_ID
    INNER JOIN tblUSERS AS tblUSER2 ON tblGAMES.P2_ID = tblUSER2.USER_ID
    INNER JOIN tblUSERS AS tblUSER3 ON tblGAMES.P3_ID = tblUSER3.USER_ID
    INNER JOIN tblUSERS AS tblUSER4 ON tblGAMES.P4_ID = tblUSER4.USER_ID
请注意,我的语法可能需要一些调整,我最近没有编写足够的MySQL来100%可靠地释放它。但你明白了。每个连接都会独立添加到整个产品中

您还可以根据每个玩家的要求更改
加入类型。例如,如果某些游戏是双人游戏,那么您希望这些游戏改为
左外连接
s,以便更好地处理
null
值等