在不同的字段上加入两次表格

时间:2015-02-28 21:00:02

标签: mysql outer-join

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'] ;?>将打印该主题的作者。

1 个答案:

答案 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'];