如何使用外键基于其他表获取值

时间:2019-02-11 14:09:33

标签: sql database oracle

所以,我有这个数据库:

ERD Diagram

Tables

带下划线=主键

粗体=外键

是否有使用SQL的方式:

1)找到专辑曲目中所有这些录音的标题。

2)删除唱片集ID 1上的recordId 1的音轨

或者说数据库设计不可能吗?如果是这样,请问我如何改进它的任何提示?如果这是一个愚蠢的问题,很抱歉,我是数据库新手。

1 个答案:

答案 0 :(得分:1)

在我看来,您已经很好地考虑了数据模型,但是开始编写SQL时遇到了麻烦。

如果没有示例数据,很难回答这个问题,但是这里有一些模糊的示例-也许它们会让您朝正确的方向入手。

1)找到专辑曲目中所有这些录音的标题。

select r.recordingID, s.songTitle -- you want the title
from song s                       -- so start with the song table
inner join recording r            -- match song to a recording
  on r.songid = s.songid
inner join albumtrack at          -- you only want recordings with an album track
  on at.recordingid = r.recordingid;

2)删除唱片集ID 1上的recordId 1的音轨

delete from albumtrack
where recordingID = 1
  and cdID = (select cdID from cd where albumID = 1);