我需要获取具有尽可能多标签数量的相关产品。
例如:
Prod1具有以下标签:tag1,tag2,tag3
Prod2具有以下标签:tag2,tag4,tag5
Prod3具有以下标签:tag2,tag3,tag5
Prod4具有以下标签:tag6,tag7,tag5
因此与Prod1最相关的产品如下
1- Prod3,因为它们与两个标签共享:tag2和tag3,
2-下一个相关产品是Prod2,因为它们与一个标签tag2共享
我的数据库架构如下:
CREATE TABLE Videos (VideoID INT PRIMARY KEY,
VideoTitle VARCHAR(80));
CREATE TABLE Tags (TagID INT PRIMARY KEY,
TagText VARCHAR(20));
CREATE TABLE VideosTags (VideoID FOREIGN KEY REFERENCES Videos,
TagID FOREIGN KEY REFERENCES Tags,
PRIMARY KEY (VideoId, TagId));
答案 0 :(得分:1)
如果您希望对VideoID = 1111
进行搜索,则:
select
videoid, count(*) counter
from VideosTags
where
videoid <> 1111
and
tagid in (select tagid from VideosTags where videoid = 1111)
group by videoid
order by counter desc
这将首先对具有最常用标签的产品进行排序。