我想也许这是不可能的,但我想在ID(用户)列中加入3个表,这三个表都有。已经好几天了。对于愿意提供帮助的人来说,这可能有点令人困惑......
表结构和表格说明如下:
wp_users(ID,display_name)这是用户表
故事(ID,SID)此表存储故事名称以及由谁开始的
写入(ID,SID,WID,文本)此表存储不同作者添加到SID的所有写入部分,因此这里可以有多行SID,每行都有不同的用户ID。 ID是用户,并匹配其他表中的ID值。 WID是每个SID的写作部分。
每个故事ID(SID)在写表中有多个记录,每个记录具有不同的写入ID。故事表只有一个SID和一个ID - 启动故事的人。我的代码只根据此故事表(启动故事的人)中的ID给出display_name。我需要它来显示其他人为该SID添加的每一段写作的显示名称,这些写入存储在写表中。
代码目前有效,除非它为写入表中存储的所有文章提供相同的作者(display_name),即使每个文字作品(WID)都有不同的作者。
问题是,一旦我尝试在writing.ID = wp_users.ID上添加另一个连接,例如join wp_users,我就没有任何变量的结果。如果我不尝试在ID处加入第三个表,则代码可以正常工作,但它只会显示
SELECT wp_users.ID, wp_users.display_name,
stories.ID, stories.SID, stories.story_name, stories.category,
writing.ID, writing.text, writing.approved
FROM stories
JOIN wp_users ON stories.ID = wp_users.ID
JOIN writing ON stories.SID = writing.SID
WHERE (stories.SID = $the_SID) AND (writing.approved = 'Y')
");
<?php
foreach ($results as $result) {
echo "<br>" . "Author: " . $result->display_name . "<br>" . $result->text . "<br>";
问题的一部分可能是所有3个表的名称ID都不一样吗?甚至可以在ID上加入3个表吗?非常感谢任何帮助...
答案 0 :(得分:2)
当然可以JOIN
尽可能多的表格。这取决于你追求的结果。另外,我认为您在LEFT JOIN
之后查询了这些问题。
如果您的“主要选择”将成为writing
表,请尝试以下操作:
SELECT
wp_users.ID,
wp_users.display_name,
stories.ID,
stories.SID,
stories.story_name,
stories.category,
writing.ID,
writing.text,
writing.approved
FROM writing
LEFT JOIN stories on writing.SID = stories.SID
LEFT JOIN wp_users ON writing.ID = wp_users.ID
WHERE (stories.SID = $the_SID) AND (writing.approved = 'Y')