2010-05-28 61 views
2

我有三个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>'; 
} 

正如你猜$物品─> ID变量显示作者ID,但我想,而不是显示的名字,这是保存在authors表。相同的类别...

任何人都可以请帮忙吗?

在此先感谢。

回答

1

@Tommy是对的,你必须使用JOINS,这里有一些让你去。
假设你的三个表被称为“文章”,“用户”和“类别”:

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,因为你想抓住所有的东西。

2

您必须将其他表加入到一起以获取该信息。请在这里看到关于SQL Joins的更多信息。如果您之前没有使用过连接,请查找更多关于如何在表之间进行简单和复杂连接的示例。一旦你加入你的表格,你所要求的所有数据都将可用。

+0

我应该如何加入三张桌子? :) – 2010-05-28 14:13:58

相关问题