经过多次尝试仍无法解决这个问题,所以我决定与您分享,看看您是否可以帮助我。
我创建了高级产品搜索,但无法根据所选类别过滤产品,我解释一下:
我有两个表:产品和产品类别。
+------------------+ | Prodcuts | +-------+----------+ | pr_id | pr_title | +-------+----------+ | 1 | Iphone | +-------+----------+ | 2 | Samsung | +-------+----------+ | 3 | Xiaomi | +-------+----------+
+--------------------------+ | Products Categories | +------------+-------------+ | ct_product | ct_category | +------------+-------------+ | 1 | 5 | +------------+-------------+ | 1 | 7 | +------------+-------------+ | 2 | 8 | +------------+-------------+
I want to filter only the products have the selected categories, for example, my mysql query is:
SELECT * products WHERE products.pr_id IN (SELECT ct_product FROM products_categories WHERE ct_category IN (5, 8, 7)
此查询的结果是 Iphone 和 Samsung。
但我想要的是,如果任何产品没有选择 3 个类别,则不会显示任何内容,因为产品 id 1 没有类别 id 8,反之亦然。
我该如何解决这个问题?
最佳答案
使用不同计数()
SELECT * products WHERE products.pr_id IN(
select ct_product
from products_categories
where ct_category IN (5, 8, 7)
group by ct_product
having count(distinct ct_category)=3
)
关于mysql - 我如何通过多个值过滤一列(严格过滤)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58337019/