【发布时间】:2020-10-21 13:28:48
【问题描述】:
我正在使用标签制作一个关系数据库。该数据库有三个表:
-
对象
-
匹配
-
标签
其中 match 是对象和标签之间的简单关系(即每个条目由一个主键和两个外键组成)。我想构建一个查询,在其中可以找到所有给定标签的所有对象,但不确定如何做。
例如,这些是三个表:
- 对象
- 死亡变成了她
- 比利麦迪逊
- 标签
- 喜剧
- 恐怖
- 匹配
- 1 | 1
- 1 | 2
- 2 | 1
鉴于有人想要一部恐怖喜剧,我如何构造查询以仅查找具有所有匹配项的对象?我意识到这是基本的,但我真的没有找到任何答案。如果整个架构都关闭了,请随时指出这一点。
作为记录,我使用的是 Python、SQLAlchemy 和 SQLite。目前我已经列出了要在 Match 中找到的所有标签 ID。
编辑:对于任何将来的参考,我使用 astentx 的解决方案对查询稍作修改,以便立即从对象访问数据:
select object.Length, object.title
from object
join match
on object.id = match.object
join tag
on match.tag = tag.id
join filter_tags
on tag.name = filter_tags.word
【问题讨论】:
标签: sql