php - MySQL从中间表中计数

标签 php mysql count

我正在尝试在包含两个 id 的中间表中查找最常用的类别,我正在运行它来查找针对类别的所有帖子计数。

$data = $conn->query('SELECT * FROM category WHERE category_name ORDER BY category_name');

foreach($data as $row) {

$sql = "SELECT COUNT(p_id) FROM p_categories c,category ca WHERE c.category_id = ca.category_id AND category_name = :category_name";
$q = $conn->prepare($sql);
$q->execute(array(':category_name' => $row['category_name']));
$catco = $q->fetch();

echo '<p>'.$row['category_name'].' ('.$catco[0].')</p>';
}

这会返回所有类别,但我想将其限制为仅具有最多 p_id 的前四个类别。我尝试将计数查询限制为 4,但这不起作用。

以下是表格:

帖子:p_id、p_name

p_categories:p_id、category_id

类别:category_id、category_name

最佳答案

您可以在单个查询中完成此操作

$sql = "SELECT p_categories.category_id, COUNT(*) AS cnt, category.category_name
        FROM p_categories 
        LEFT JOIN category
        ON p_categories.category_id = category.id 
        GROUP BY `category_id` 
        ORDER BY cnt 
        DESC LIMIT 4"

$data = $conn->query($sql); 
foreach($data as $row) {
    echo '<p>'.$row['category_name'].' ('.$row['cnt'] .')</p>';
}

关于php - MySQL从中间表中计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29267324/

相关文章:

php - Laravel 5 - Controller 中的路由和可变参数

php - 在mysql中保存数据但不能

mysql - 我如何修复我的(复杂的)查询,以便它为我提供正确的表?

scala - Spark 多个动态聚合函数,countDistinct 不起作用

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

PHP Composer 脚本不会触发

php - wordpress - woocommerce - 从商店登陆页面删除面包屑

MySQL:对行组合设置唯一限制的问题

google-sheets - 忽略隐藏列的公式

Laravel 计数多级 groupBy