【发布时间】:2008-08-24 00:09:34
【问题描述】:
我正在为一个网站实施一个标记系统。每个对象有多个标签,每个标签有多个对象。这是通过维护一个表来实现的,每条记录有两个值,一个用于对象的 id 和标签。
我希望编写一个查询来查找与给定标签集匹配的对象。假设我有以下数据([object] -> [tags]* 格式)
apple -> fruit red food
banana -> fruit yellow food
cheese -> yellow food
firetruck -> vehicle red
如果我想匹配(红色),我应该得到苹果和救火车。如果我想匹配(水果,食物),我应该得到(苹果,香蕉)。
我如何编写一个 SQL 查询来做我想做的事?
@Jeremy Ruten,
感谢您的回答。使用的符号用于提供一些示例数据 - 我的数据库确实有一个表,每条记录有 1 个对象 id 和 1 个标签。
其次,我的问题是我需要获取与所有标签匹配的所有对象。用你的 OR 代替 AND 像这样:
SELECT object WHERE tag = 'fruit' AND tag = 'food';
运行时不产生任何结果。
【问题讨论】:
-
您使用什么 RDBMS?你需要如何实现这个?存储过程?你想如何传递参数?或者您会在 DBMS 之外动态地编写 SQL 吗?在这种情况下,使用什么编程语言?
标签: sql many-to-many tagging