【发布时间】:2014-07-12 17:14:56
【问题描述】:
如何执行以下分面搜索语句:
SELECT * FROM 动物 WHERE animal is assigned to tag ('brown' or 'black') AND tag ('male')
给定以下表结构:
动物(即“Max”、“Toby”、“Buster”)
标识 |名字
动物标签(地图)
动物ID |标签标识
标签(即“黑色”、“棕色”、“白色”、“狗”、“猫”、“男性”、“女性”)
标识 |标记
标签组(映射表)
标签ID |标签组ID
标签组(即“颜色”和“性别”)
标识 |标签组
这是我的尝试:
SELECT * FROM animals
INNER JOIN animalTags ON animalTags.animalsId = animals.id
INNER JOIN tags ON animalTags.tagsId = tags.id
INNER JOIN tagGroups ON tagGroups.tagsId = tags.id
INNER JOIN tagGroup ON tagGroups.tagGroupsId = tagGroup.id
然后是 GROUP BY 和 HAVING 我假设要说这样的话:
GROUP BY tagGroup
???
这需要灵活,最终它变成一个存储过程,我只需传入 51,69,88 之类的标签 ID,并且存储过程确实发挥了它的魔力。
【问题讨论】:
-
嗨凯文,我一直处于这种情况,您需要传递已选择的值,或者如果没有选择则假定全部。问题是我目前正在打电话,请随时给我发消息,如果仍然需要,我很乐意在今晚晚些时候提供帮助
标签: sql sql-server faceted-search