Sql 需要简单连接的帮助吗
爱 对问题的正确认识Sql 需要简单连接的帮助吗,sql,join,left-join,inner-join,Sql,Join,Left Join,Inner Join,爱 对问题的正确认识 SELECT *,t.id AS threadid FROM threads t LEFT JOIN players p on p.id = t.last_poster WHERE t.boardid = $boardid 我在线程中有两个字段,分别称为posterid和lastposterid。哪些是线程启动程序/最后一张海报的ID。我想做的是从球员表中得到他们的名字 但是怎么做呢?你只需要加入你的玩家表两次,就像这样 SELECT threads.*,
SELECT *,t.id AS threadid FROM threads t
LEFT JOIN players p on p.id = t.last_poster
WHERE t.boardid = $boardid
我在线程中有两个字段,分别称为posterid
和lastposterid
。哪些是线程启动程序/最后一张海报的ID。我想做的是从球员表中得到他们的名字
但是怎么做呢?你只需要加入你的玩家表两次,就像这样
SELECT
threads.*,
starterPlayer.*,
lastPosterPlayer.*
FROM
threads
LEFT OUTER JOIN
players starterPlayer
ON
starterPlayer.id = threads.posterid
LEFT OUTER JOIN
players lastPosterPlayer
ON
lastPosterPlayer.id = threads.lastposterid
你只需要加入你的玩家表两次,就像这样
SELECT
threads.*,
starterPlayer.*,
lastPosterPlayer.*
FROM
threads
LEFT OUTER JOIN
players starterPlayer
ON
starterPlayer.id = threads.posterid
LEFT OUTER JOIN
players lastPosterPlayer
ON
lastPosterPlayer.id = threads.lastposterid
那么
SELECT *,
(SELECT name
FROM players
WHERE players.id = threads.posterid) AS poster,
(SELECT name
FROM players
WHERE players.id = threads.lastposterid) AS last_poster
FROM threads;
那么
SELECT *,
(SELECT name
FROM players
WHERE players.id = threads.posterid) AS poster,
(SELECT name
FROM players
WHERE players.id = threads.lastposterid) AS last_poster
FROM threads;
您可以两次连接到同一个表,并为该表指定不同的别名 这假定始终存在第一个和最后一个海报,如果是这种情况,则需要
内部连接
而不是左连接
,则需要更改select语句以获取相关字段
SELECT t.id AS threadid, playerFirst.name AS FirstPoster, playerLast.name as LastPoster
FROM threads t
INNER JOIN
players playerFirst ON playerFirst.id = t.posterid
INNER JOIN
players playerLast ON playerLast.id = t.lastposterid
您可以两次连接到同一个表,并为该表指定不同的别名 这假定始终存在第一个和最后一个海报,如果是这种情况,则需要
内部连接
而不是左连接
,则需要更改select语句以获取相关字段
SELECT t.id AS threadid, playerFirst.name AS FirstPoster, playerLast.name as LastPoster
FROM threads t
INNER JOIN
players playerFirst ON playerFirst.id = t.posterid
INNER JOIN
players playerLast ON playerLast.id = t.lastposterid