我有三个mysql表,第一个包含有关文章的信息(文章ID,作者ID,标题和内容),第二个表包含有关我网站上注册用户的信息(ID,名称,密码,电子邮件),第三个表包含有关类别(ID,名称)。
我需要获取所有文章并显示标题,作者姓名和类别名称,但文章表仅包含有关作者和类别ID的信息,而不是名称。
我知道如何从文章表中获取所有文章,但我应该如何同时从另一个表中获取作者姓名和类别名称以显示文章标题?
希望我很清楚。
这是我用来显示文章标题的代码:
$q = mysql_query("SELECT * FROM articles ORDER BY ID DESC");
if(!$q) die(mysql_error());
while($article = mysql_fetch_object($q)) {
echo '<div class="article">';
echo $article->title . '</a>';
echo '<p class="details">Author:' . $article->author_ID . '.</p>';
echo '</div>';
}
正如您猜测$ article-&gt; ID变量显示作者ID但我希望显示名称,而是保存在authors表中。类别相同......
有人可以帮忙吗?
提前致谢。
答案 0 :(得分:2)
您必须将其他表连接在一起才能获取该信息。有关SQL Joins的更多信息,请参阅此处。如果您之前没有使用过连接,请查看有关如何在表之间进行简单和复杂连接的更多示例。加入表格后,您所要求的所有数据都将可用。
答案 1 :(得分:1)
SELECT articles.title, users.name, categories.name FROM articles
JOIN users ON users.id=articles.author_id
JOIN categories ON categories.id=articles.category_id
ORDER BY ID DESC
现在我只是猜你的牌桌和场名
在第一行,我调用了必填字段,如tablename.field
然后,我将用户表加入文章表,其中用户表中用户的 id 应该等于文章表中的 author_id
然后我加入类别表,指定类别表中的 id 类别等于 category_id 在文章表格中
在此之后,您可以使用WHERE子句来进一步缩小选择范围,或直接进入ORDER BY,因为您希望全部抓住它们。