php - SQL : get count of articles in two categories

标签 php mysql

在我的 MySQL 数据库中,我有一个表存储文章和类别的关联,列是 category_id 和 product_id。因此,属于类别 #3 和 #6 的文章 #5 具有行 (3,5)(6,5)。

现在我需要获取类别 1 和 6 中的文章数。使用 SELECT count(category_id) from s_a_c where category_id=1 可以轻松获取一个类别中的文章数但是我如何扩展这个查询来检查两只猫呢?

最佳答案

这是一种使用两个连接的方法(一个连接用于您要搜索的每个类别):

SELECT COUNT(1)
FROM articles
INNER JOIN s_a_c c1 ON articles.product_id = c1.product_id
    AND c1.category_id = 1
INNER JOIN s_a_c c2 ON articles.product_id = c2.product_id
    AND c2.category_id = 6

这是另一种使用 HAVING 子句的方法。派生表从 s_a_c 中提取类别 1 和类别 6 的所有产品,两者都有 (COUNT(1) = 2)。这利用了 {product_id, category_id} 将是唯一的这一事实:

SELECT COUNT(1)
FROM
(
    SELECT product_id
    FROM s_a_c
    WHERE category_id IN (1,6)
    GROUP BY product_id
    HAVING COUNT(1) = 2
) x

关于php - SQL : get count of articles in two categories,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14779924/

相关文章:

php - 从 ajax 响应强制下载 xlsx 不起作用

php - 从命名空间导入所有内容

php - 在 cPanel 中的 Cronjob 上运行 PHP 文件

php - 如何使用 PHP 从 FORM 添加动态添加的行到 mySQL 数据库

php - 当用户已连接时调用 Facebook 注销/断开 FB.login()

php - 如何将 PHP 数组值分配给 JavaScript 数组

mysql - Piwik MySQL 驱动程序未安装

java - 将相同的数据插入属于不同服务器的两个表中

mysql - linux下通过cmd导入数据库

Mysql-Linux : Insert a record in a table at a specific date and time