提前搜索mysql查询无法正常工作

时间:2015-10-21 05:44:50

标签: php mysql

我正在研究高级搜索功能,人们可以使用高级搜索搜索食谱。 为此,我有这些数据库结构,

1)食谱

id   title
1    banana
2    orange

2)filter_main_category

id    name
1     ingredients
2     restrictions
3     cuisines
4     meal_type

第3)sub_cat

id    name
1     bread
2     breakfast
3     dinner
4     banana
5     butter
6     eggs

4)的关系

id    recipe_id    main_category_id    sub_cat_id
1     1            4                   4
2     1            4                   6
3     1            2                   6

因此,根据表格,您可以看到recipe_id 1有3个过滤器 其中两个main_category_id 4,另一个main_category_id 2。

现在,如果用户提前选择main_category_id = 4和sub_cat_id = 4,6,那么我们就这样显示结果,

SELECT * FROM relations WHERE main_category_id = 4 AND sub_cat_id IN (4,6)

输出:

id    recipe_id    main_category_id    sub_cat_id
1     1            4                   4
2     1            4                   6

现在,如果用户还从高级过滤器中选择main_category_id = 2和sub_cat_id = 6(main_category_id = 2用于限制,那么如果用户选择此过滤器,我们必须从搜索结果中删除配方) ,那么我们必须从输出中删除最后一条记录(因为main_category_id = 2所以我们必须从搜索中限制子类别)

对于我正在尝试的是,

SELECT * FROM relations WHERE (main_category_id = 4 AND sub_cat_id IN (4,6)) AND ( main_category_id = 2 AND sub_cat_id NOT IN (6) )

但它返回了错误的结果,

我应该在输出中想要什么

id    recipe_id    main_category_id    sub_cat_id
1     1            4                   4

有这样的解决办法吗?

0 个答案:

没有答案