我需要从用户在文本字段中输入的关键字构建一个查询,它将执行以下操作:获取关键字并在表中进行搜索,之后汽车具有所有给定的关键字,少于所有关键字,并继续向下仅有一个关键字的汽车。我的表看起来像这样:
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;
发布于 2012-06-03 03:38:58
你不需要有,因为它只会发送时,只有3辆车属于给定的关键字。尝尝这个
Select car_id from keywords ,,GROUP_CONCAT(keyword)
Where keyword in ("old","ford", "cheap")
group by car_id
这将为您提供属于car的逗号分隔关键字
https://stackoverflow.com/questions/10865338
复制相似问题