不能连接mysql中的3个表到链接用户ID


Can't join 3 tables in mysql to link user ID

我想也许这是不可能的,但我想在ID(用户)列连接3个表,这3个表都有。已经做了好几天了。对于任何愿意帮忙的人来说,这可能有点令人困惑……

表结构和表解释如下:

wp_users (ID, display_name)这是用户表

stories (ID, SID)该表存储了故事的名称和始发者

writing (ID, SID, WID, text)该表存储不同作者添加到SID的所有写入,因此这里可以有多行SID,每一行都有不同的用户ID。ID是用户,与其他表中的ID值相匹配。WID是每个SID的编写部分。

每个故事ID (SID)在写表中有多条记录,每个记录都有不同的写ID。故事表只有一个SID和一个ID——故事的发起人。我的代码只根据这个故事表中的ID(开始这个故事的人)给出display_name。我需要它显示其他人为该SID添加的每条写入的显示名称,这些名称存储在写入表中。

尽管每个写入块(WID)有不同的作者,但对于存储在写入表中的所有写入块,它给出了相同的作者(display_name)。

问题是,一旦我尝试在写入时添加另一个连接,例如join wp_users。ID = 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>";

问题的一部分可能是名称ID不能为所有3个表相同?有可能在ID上连接3个表吗?

当然可以根据需要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')