Sql 查找由某个演员主演的视频游戏标题

Sql 查找由某个演员主演的视频游戏标题,sql,oracle-sqldeveloper,Sql,Oracle Sqldeveloper,我有这个IMDB的图表 它说明了IMDB网站背后的数据库关系和属性 我需要找到由某个演员主演的所有视频游戏标题(具有种类类型ID 6)。我已经做了一段时间了,我真的不知道该怎么做。我想使用CAST_INFO.NAME属性来解决这个问题,然后只按种类\u类型\u ID进行排序,但问题是,你不能通过标题访问CAST信息,即使对我来说,图表表明你可以 我不要求给我解决方案,但更多的是朝着正确的方向推进。我有一个将表连接在一起并进行排序的想法,但问题是这些表似乎都不能自然连接并且仍然有意义。免责声明:

我有这个IMDB的图表

它说明了IMDB网站背后的数据库关系和属性

我需要找到由某个演员主演的所有视频游戏标题(具有种类类型ID 6)。我已经做了一段时间了,我真的不知道该怎么做。我想使用CAST_INFO.NAME属性来解决这个问题,然后只按种类\u类型\u ID进行排序,但问题是,你不能通过标题访问CAST信息,即使对我来说,图表表明你可以


我不要求给我解决方案,但更多的是朝着正确的方向推进。我有一个将表连接在一起并进行排序的想法,但问题是这些表似乎都不能自然连接并且仍然有意义。

免责声明:我可能错了,因为从图表中找不到足够的信息,但假设外键是根据表名生成的,你的问题可以解决

根据图,您应该能够使用键将TITLE表连接到CAST_INFO表

假设“TITLE\u ID”是CAST\u INFO的外键,您将通过以下方式将两者连接起来:

SELECT * FROM TITLE
JOIN CAST_INFO ON CAST_INFO.TITLE_ID = TITLE.ID;
现在,由于您需要“特定参与者”,并假设该参与者存在于名称表中,所以可以使用另一个键连接该表

SELECT * FROM TITLE
JOIN CAST_INFO ON CAST_INFO.TITLE_ID = TITLE.ID
JOIN NAME ON CAST_INFO.ID = NAME.CAST_INFO_ID;
最后,为您的where条件加入“种类类型”表:

SELECT * FROM TITLE
JOIN CAST_INFO ON CAST_INFO.TITLE_ID = TITLE.ID
JOIN NAME ON NAME.CAST_INFO_ID = CAST_INFO.ID
JOIN KIND_TYPE ON KIND_TYPE.TITLE_ID = TITLE.ID
WHERE KIND_TYPE.ID = 6
ORDER BY KIND_TYPE.ID;

您只需要确定表将在哪一列上联接。:)

结果是中的
是SQL中的新耶稣

这段代码与预期完全一致,返回了演员麦兹·米克尔森(Mads Mikkelsen)玩过的所有视频游戏(即1:Quantum of Solace)


查找强制转换标题联接表(一个同时包含title.id和cast_info.id作为外键的表,可能没有太多其他字段)。我在没有联接的情况下修复了它。我将为其他人发布答案:D
SELECT title FROM IMDB.TITLE WHERE TITLE.ID IN
  (SELECT MOVIE_ID FROM IMDB.CAST_INFO WHERE PERSON_ID=
    (SELECT id FROM IMDB.NAME WHERE name='Mikkelsen, Mads')) AND KIND_ID=
      (SELECT id FROM IMDB.KIND_TYPE WHERE KIND='video game');