如何获取包含所有结果的字段组,小于所有结果等


How to get group of fields with all results, less than all etc

我需要从用户在文本字段中输入的关键字构建一个查询,这将执行以下操作:获取关键字并在表格中搜索,之后汽车具有所有给定的关键字,少于所有关键字,然后继续向下行驶只有一个关键字的汽车。我的表如下所示:

field_id | car_id | keyword |
----------------------------
1        | 5       | 1989   |
-----------------------------
2        | 8       | old    |
-----------------------------
3        | 8       | ford   |
-----------------------------
6        | 8       | cheap  |
-----------------------------
4        | 7       | ford   |
-----------------------------
6        | 7       | cheap  |
-----------------------------
5        | 6       | ford   |
-----------------------------

假设用户搜索了"旧"、"福特"和"便宜",则应返回car_id 8、7 和 6,因为它们包含关键字。此外,我需要知道哪辆车有哪些关键字(8:"旧"、"福特"、"便宜"和 7:"福特"、"便宜"和 6:"福特")。我不是 MySQL 的专家,所以我现在不知道是否可以在这里创建某种多维数组......

我有一个查询,它只选择输入了所有关键字的汽车,如果它有任何用处:

Select car_id from keywords 
Where keyword in ("old","ford", "cheap") 
group by car_id having count(*) = 3;    

你不需要有,因为它只会在只有 3 辆车属于给定关键字时发送。试试这个

Select car_id from keywords ,,GROUP_CONCAT(keyword)
Where keyword in ("old","ford", "cheap") 
group by car_id 

这将为您提供属于汽车的逗号分隔关键字