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获取作者的姓名。
我能以某种方式得到last_poster的名字吗?
添加AND p.id = t.last_poster
不会出现任何错误,但我应该如何打印呢?因为<?php echo $row['name'] ;?>
将打印该主题的作者。
答案 0 :(得分:0)
您需要与玩家表一起加入两次:每列一次 您需要为播放器表使用别名,以及列的不同输出名称(否则$ row [&#39; name&#39;]会让人感到困惑)。
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'];