【发布时间】:2021-03-02 07:22:54
【问题描述】:
所以我正在构建一个应用程序,其中一个元素是搜索电影。数据存储在关系数据库中。
过滤条件之一是流派。电影可以有多种类型,所以它是多对多的关系。除了通常的标签示例之外,过滤器的工作方式并不完全相同。
假设您有一部类型为 documentary 和 sports 的纪录片。如果我对纪录片感兴趣但对体育不感兴趣,我很可能对体育相关的纪录片不感兴趣。如果我像通常使用标签一样实现查询,则查询如下所示:
select distinct(m.id) from movies m
join genres_movies gm.movie_id = m.id
join genres on gm.genre_id = g.id
where genre.name in ('documentary', 'action', 'horror')
通过这个查询,我会得到上面提到的体育纪录片。那么如何排除所有具有某种类型的电影呢?
【问题讨论】:
标签: sql many-to-many