在不同领域加入 table 两次

Join a table two times on different fields

topics: title, poster_id (int), last_poster(int), date
players: id, name

SELECT *, f.name AS forum 
FROM topics t 
LEFT JOIN forums f ON f.id = t.forum_id 
LEFT JOIN players p ON p.id = t.poster_id

在主题中,我有两个字段,其中包含主题作者的 ID (poster_id),以及一个包含在该主题中发布最新消息的玩家 ID 的字段 (last_poster).

然后我根据播放器中的那个ID得到作者的名字table。

我能以某种方式也得到 last_poster 的名称吗?

添加AND p.id = t.last_poster 不会出现任何错误,但我该如何打印呢?因为 <?php echo $row['name'] ;?> 将打印主题的作者。

你需要加入玩家table两次:每列一次。
您需要为玩家 table 使用别名,并为列使用不同的输出名称(否则 $row['name'] 会造成混淆)。

SELECT t.*, f.name AS forum, p.name as poster_name, lp.name as lastposter_name
FROM topics t 
LEFT JOIN forums f ON f.id = t.forum_id 
LEFT JOIN players p ON p.id = t.poster_id
LEFT JOIN players lp ON lp.id = t.last_poster

从 php 开始,您可以使用别名引用这些列

$creator = $row['poster_name'];
$lastposter = $row['lastposter_name'];