【发布时间】:2014-07-05 07:57:51
【问题描述】:
我试图寻找答案,但没有找到任何东西,我不确定我是否以最好的方式描述了这一点,但是这里......
所以,我有一个 MySQL 数据库,以及一个用户可以选择 0-3 个类别来搜索数据库的网站。
例如,如果我在数据库中有这样的记录:
id|cat1|cat2|cat3
-----------------
1 | a | b | c
2 | a | |
3 | z | b | a
4 | y | a |
5 | b | c | a
我正在尝试找出一种方法,例如,如果用户选择要搜索的 1 个类别并且它是“a”,那么它将返回记录 [1,2,3,4,5],并且如果用户选择 2 个类别进行搜索,例如“a”和“b”,它将返回记录 [1,3,5],并且用户选择了 3 个类别,例如“a”和“c”和“b” , 那么它会返回 [1,5]。
无论是在数据库中还是在用户输入的内容中,都无法保证顺序。
我的查询可以选择具有任何输入类别的记录,但我似乎无法弄清楚如何只返回提供所有类别的记录。
有人知道怎么做吗?
谢谢!
这是我目前所拥有的,它很乱,我只是在这里在黑暗中拍摄,哈哈,但它就是这样(在这个例子中,选择了“教堂”和“职业”类别):
SELECT * FROM all_terms
WHERE
( (subject1 in ('Church', 'Occupation') OR subject1 IS NULL OR subject1 = '')
AND (subject2 in ('Church', 'Occupation') OR subject2 IS NULL OR subject2 = '')
AND (subject3 in ('Church', 'Occupation') OR subject3 IS NULL OR subject3 = '')
AND ( (subject1 IS NOT NULL && subject1 != '')
OR (subject2 IS NOT NULL && subject2 != '')
OR (subject3 IS NOT NULL && subject3 != '')))
【问题讨论】:
-
您可以将 SQL 发布到您为他们中的任何一个工作的地方吗?