gpt4 book ai didi

php - 加入两个 MySQL 表并显示组合数据

转载 作者:太空宇宙 更新时间:2023-11-03 10:23:54 25 4
gpt4 key购买 nike

我的数据库中有两个表。

cat - catid, catname文章 - id、catid、内容

所以我要显示的是类别名称(catname)以及该类别中有多少篇文章。

这是我的代码,但它确实有效。

$query = "SELECT cat.cname,  COUNT(articles.cat_id)".
"FROM cat, articles ".
"GROUP BY cat_id";

$result = mysql_query($query) or die(mysql_error());

while($row = mysql_fetch_array($result)){
echo $row['cname']. " - ". $row['COUNT(cat_id)'];
echo "<br />";
}

我们将竭诚为您提供帮助。谢谢。

最佳答案

所以这是一对多的关系。即 1 个类别 -> 许多文章。

最好的方法是创建第三个表,即邻接表。

让您的“category_id”和“article_id”在表“cat”和“article”中保持唯一。

在您的第三个表中,您定义了 1 : 许多关系。

Table 3: cat_articles

adj_id cat_id art_id
1 1 1
2 1 2
3 2 3
4 2 4
5 3 5

现在加入表格:

$sql = "SELECT * FROM `cat_articles` adj ".
"LEFT JOIN (`cat` cat, `articles` art)".
"ON (cat.cat_id = adj.cat_id AND art.art_id = adj.art_id) ";

这需要邻接表,保留它的格式(由于左连接)并将表 articlecategory 附加到它,为您提供所有分类表文章。您现在可以使用 mysql_fetch_array() 获取结果。

编辑:引用第一条评论,显示行数

您可以像您所做的那样,使用 SQL 的函数 COUNT 返回特定列的计数。

或者,使用 PHP,运行查询,然后使用 mysql_num_rows($result) 返回 SQL 在其缓冲区中的行数。

或者,使用 mysql_fetch_array($result) 检索结果并使用 count 返回数组中配对值的数量。

关于php - 加入两个 MySQL 表并显示组合数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8104102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com