抱歉,如果以前有人问过这个问题,但我真的不知道要搜索什么,因此不知道如何措辞问题标题,所以手指交叉。
我正在构建一个非常通用的系统,其中一个产品可以有多个类别,并且在前端,用户可以搜索指定多个类别的产品。
假设我们有以下架构和数据(我还不能发布图片,抱歉,请参阅链接)-
表名:product_categories
数据:
产品表非常标准 - id、名称、金额等。
所以产品 1 有 2 个类别。
如果用户在搜索页面上选中代表类别 2 和 3 的 2 个复选框,我将如何查询只有同时具有这两个类别的产品才会返回?
如下所示的内容不起作用,因为其中没有一行的类别 id 为 2 且类别 id 为 3:
SELECT * from product_categories where `category_id` = 2 AND `category_id` = 3;
我也尝试过使用 WHERE IN,但是,即使我正在寻找我不想要的同时具有类别 id 2 和 6 的产品(例如),这也会返回产品 1。
这是更大查询的一部分,但是,如果我设法找到一个,我将能够应用该解决方案。