在不同领域加入 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'];
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'];