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
值等