php - MySQL数据必须存在于两列中才能返回

标签 php mysql

我坚持使用实现此 MySQL 查询的最佳方法。

我有三个表:

产品 - 这是产品列表

id | product_name

- 这是一个类别列表

id | category_name

cats_selected - 可以将多个类别分配给一个产品,此表列出了它们

cat_id | product_id

在搜索中,用户可以一次选择多个类别进行搜索。我想检查每个类别中是否存在产品,因此需要匹配 cat_id 和 product_id。猫 ID 作为数组发布。

查询这些数据的最佳方式是什么?

例如,由于显而易见的原因,以下内容不起作用:

SELECT *
FROM products
JOIN cats_selected
ON cats_selected.product_id = products.id
AND cats_selected.cat_id = '16372' 
AND cats_selected.cat_id = '9'

最佳答案

SELECT p.id
FROM products p
JOIN cats_selected s ON s.product_id = p.id
where s.cat_id in (16372, 9)
group by p.id
having count(distinct s.cat_id) = 2

关于php - MySQL数据必须存在于两列中才能返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18984702/

相关文章:

php - 随机选择动态复选框

php - try/catch 在 PHP 中不起作用

javascript - 无法在 javascript 脚本标记内输出实际的 json 数据

mysql - 为此应用程序连接到数据库的最佳方式

mysql - 如何在 Codeigniter 中运行多个以分号分隔的查询

php - 从mysql查询结果数组访问信息?

php - 将数据从 IOS 应用程序发布到 PHP Web 服务(托管 GODADDY)

php - mb_detect_encoding() 没有按预期工作?

php - 当本地日期格式不同时处理 mySQL 日期格式

mysql - 如何使用我的站点目录中的现有文件创建 WordPress 数据库文件?