你可以通过大量的连接来做到这一点。以下查询以当前视频开始
tv
. 它查找属于该视频的所有标签
tvt
. 然后它查找所有其他视频共享一个或多个标签
rtvt
. 对于相关视频,它会查找标签详细信息
rt
以及视频细节
rtv
.
select rtv.video_name
, sum(case when rt.tag_type = 'actor' then 1 else 0 end) ActorCount
, sum(case when rt.tag_type = 'tag' then 1 else 0 end) TagCount
from tube_videos tv
left join tube_video_tags tvt
on tvt.tube_video_id = tv.id
left join tube_video_tags rtvt
on rtvt.tag_id = tvt.tag_id
and rtvt.tube_video_id <> tv.id
left join tags rt
on rt.id = rtvt.tag_id
left join tube_videos rtv
on rtv.id = rtvt.tube_video_id
where tv.id = <YourMovieId>
group by rtv.id, rtv.video_name
order by ActorCount desc, TagCount desc
在所有连接之后,您可以计算各种徽章类型并按它们排序。