我有标准标签模型使用三个表方法... Object,ObjectTag,Tag。所以一个Object可以有多个标签。
现在,假设我有一个查询,从给定的Tag ='html'中选择对象:
SELECT o.*
FROM Object o
INNER JOIN ObjectTag ot ON ot.objectId = o.Id
INNER JOIN Tag t ON t.id = ot.tagId
WHERE t.name = 'html'
ORDER BY o.Id
那么我该如何使用此查询或结果来获取相关标签。含义我想获得每个对象关联的所有其他标记。所以想象一下我从上面的查询得到以下结果:
Object 1 ---> [html, apple]
Object 2 ---> [html, web, standard]
Object 3 ---> [html, coding]
所以我想获得此查询中对象的所有其他标记:
[apple, web, standard, coding]
我似乎无法理解这一点。
答案 0 :(得分:0)
select distinct t.name
from ObjectTag ot join
tags t
on ot.tagId = t.id
where exists (select 1
from ObjectTag ot2 join
Tags t2
on ot2.tagid = t2.id
where ot.objectId = ot2.objectId and
t2.name = 'html' and t2.name <> t.name
) ;