经过多次尝试,我仍无法解决此问题,因此,我决定与您分享它,看看您是否可以帮助我。
我已经创建了高级产品搜索,但是我无法根据所选类别过滤产品,我解释说:
我有两个表,products和products_categories。
+------------------+ | Prodcuts | +-------+----------+ | pr_id | pr_title | +-------+----------+ | 1 | Iphone | +-------+----------+ | 2 | Samsung | +-------+----------+ | 3 | Xiaomi | +-------+----------+
+--------------------------+ | Products Categories | +------------+-------------+ | ct_product | ct_category | +------------+-------------+ | 1 | 5 | +------------+-------------+ | 1 | 7 | +------------+-------------+ | 2 | 8 | +------------+-------------+
我只想过滤具有所选类别的产品,例如,我的mysql查询是:
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,反之亦然。
我该如何解决?
答案 0 :(得分:2)
使用distinct count()
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
)
答案 1 :(得分:0)
您可以尝试使用inner join
:
SELECT * products p
INNER JOIN products_categories pc on pc.ct_product = p.pr_id
WHERE pc.ct_category IN (5, 8, 7)