php - 无法在mysql中加入3个表来链接用户ID

标签 php mysql

我想这可能是不可能的,但我想在 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)在writing表中都有多条记录,每条记录都有不同的writing ID。 stories表只有一个SID和一个ID——开始故事的人。我的代码仅根据此故事表中的 ID(开始故事的人)提供显示名称。我需要它显示其他人为该 SID 添加的每条文字的显示名称,这些文字存储在文字表中。

除了它为存储在写入表中的所有文章赋予相同的作者 (display_name) 之外,该代码当前有效,即使每个文章 (WID) 有不同的作者。

问题是,一旦我尝试添加另一个连接,例如 join wp_users on writing.ID = wp_users.ID,我就没有得到任何变量的结果。如果我不尝试加入 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 个表吗?非常感谢任何帮助...

最佳答案

当然可以 JOIN 任意数量的表。这仅取决于您追求的结果。另外,我认为您正在为这些查询使用 LEFT JOIN

如果您的“主要选择”将成为写入 表,那么请尝试如下操作:

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')

关于php - 无法在mysql中加入3个表来链接用户ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25100614/

相关文章:

php - Wordpress Visual Composer 模板集成到页面模板中

php - 通过 __get() 通过引用返回 null

php - 如何在动态加载 jquery 内容时生成可添加书签的 URL?

mysql 子查询返回多于 1 行

mysql - 查询中未使用索引。如何提高性能?

mysql - SQL 子查询来计算有多少人按星期几和按楼层结账退房(SQLZoo)

php - 学习 PHP - 是否有替代 http ://tryruby. org/的 php?

php - 使用 PHP unserialize() 多选标签中的多个选择值

php - 使用 php 和 mysql 查询的基本登录脚本

mysql - 存储大量数据的最佳方式