匹配两个不同表中的ID

时间:2011-01-13 01:15:12

标签: php

我有两张桌子;新闻和类别。在NEWS表中,CatID字段与类别中的CatID表匹配。我使用以下代码获取categoryID,但我想要新闻的类别名称,而不是ID。如何从类别表中提取它?

<?php 

 $SQL =  mysql_query("SELECT * FROM News WHERE Active = 1 ORDER BY DateEntered DESC");

   while ( $Result = mysql_fetch_array($SQL)) {
 $CatID[] = $Result[CatID];
 $NewsName[] = $Result[NewsName];
 $NewsShortDesc[] = $Result[NewsShortDesc];
 }
?>

                <div class="toparticle">
                    <span class="section"><?=$CatID[0] ?> </span>
                    <span class="headline"><?=$NewsName[0] ?></span>
                    <p><?=$NewsShortDesc[0] ?></p>
                </div>

3 个答案:

答案 0 :(得分:0)

您可以更改SQL查询以包含内部联接以获取名称。为了说明,我将假设'CATEGORIES'表中的类别名称列被称为'CatName'。您可以使用此查询:

SELECT n.*, c.CatName FROM News n
INNER JOIN Categories c ON n.CatID = c.CatID
WHERE Active = 1
ORDER BY DateEntered ASC

答案 1 :(得分:0)

根据我的理解,也许你想做:

SELECT name FROM CATEGORIES as c, NEWS as n WHERE c.CatID = n.CatID AND n.CatID = 123

我在SQL中有点生疏,我觉得它是这样的。

从我对你的问题的理解,你想做这样的事情。

答案 2 :(得分:0)

在下文中,我为新闻和类别创建了2个表:

表新闻

<强> ID | cat_id |标题

1 | 1 |测试

表类别

id |名称

1 |恐怖

你可以像这样选择使用OUTER JOIN的类别名称

SELECT news.*, categories.name AS category_name FROM news 
LEFT JOIN categories ON categories.id= news.cat_id;

如果您想了解有关此outer join

的更多信息