我坚持使用实现此 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/