我正在为网站实施标记系统。每个对象有多个标签,每个标签有多个对象。这是通过维护一个表来完成的,每个记录有两个值,一个用于对象的 id 和标签。
我正在寻找编写一个查询来查找与给定标签集匹配的对象。假设我有以下数据([object] -> [tags]* 格式)
apple -> fruit red food
banana -> fruit yellow food
cheese -> yellow food
firetruck -> vehicle red
如果我想匹配(红色),我应该得到苹果和救火车。如果我想匹配(水果,食物),我应该得到(苹果,香蕉)。
我如何编写一个 SQL 查询来做我想做的事?
@杰里米·鲁滕,
感谢您的回答。使用的表示法用于提供一些示例数据 - 我的数据库确实有一个表,每条记录有 1 个对象 id 和 1 个标签。
其次,我的问题是我需要获取与所有标签匹配的所有对象。用你的 OR 代替 AND 像这样:
SELECT object WHERE tag = 'fruit' AND tag = 'food';
运行时不产生任何结果。