【发布时间】:2016-11-06 16:30:23
【问题描述】:
我有演员表、图片表、场景表和标签表。 演员、图片和场景可以有多个标签,反之亦然。因此,每对之间的关系用一个直通表表示,如下所示:
TABLE Scene_tag:
Scene_id: int
Tag_id: int
TABLE Picture_tag:
Picture_id: int
Tag_id: int
TABLE Actor_tag:
Actor_id: int
Tag_id: int
(这只是伪代码,不是实际的表定义)
我正在尝试创建一个 SQLite 查询,该查询将列出所有标签以及它们在每个直通表中被引用的次数。例如,如果在 3 张图片和 1 个场景中使用标签“海”,则所需的输出将是:
name NumberOfScenes NumberOfPictures NumberOfActors
sea 1 3 0
到目前为止我得到的是:
select T.name, NumberOfScenes, NumberOfPicture, NumberOfActors from Tags as T
join(
select * from (
select count(*) AS NumberOfScenes from Scene_tag where Tag_id = 73)
join (select count(*) AS NumberOfPicture from Picture_tag where Tag_id = 73)
join (select count(*) AS NumberOfActors from Actor_tag where Tag_id = 73))
我遇到的问题是我无法弄清楚如何从连接部分的第一个选择中引用一个 Id,所以不是固定的73,而是类似于from Scene_tag where Tag_id = T.id
有人可以帮助我实现这一目标吗?或者提供替代方法?
【问题讨论】:
-
请也添加标签表架构
-
@scaisEdge
TABLE Tag: id: int, name: string -
看来你已经有答案了..如果你需要其他人请评论