您好 我是SQL的新手,所以想知道你们是否可以帮助我。
我有4张桌子
以及在专辑和歌曲之间加入多对多的表格 - 专辑
基本上在我的专辑表中我有一个歌曲ID和一个专辑ID。
在专辑表中我有一个artistID。
我想列出属于特定艺术家的每首歌曲,即使它们之间没有直接的外键引用。从艺术家到歌曲的唯一真实链接是通过专辑。有可能使用某种高级查询魔法吗?
答案 0 :(得分:7)
听起来像一个简单的多表连接:
select artist.name, album.title, song.title
from artist
inner join album on album.artistid = artist.artistid
inner join albumsongs on albumsongs.albumid = album.albumid
inner join songs on songs.songid = albumsongs.songid
where artist.name = 'Pere Ubu'
答案 1 :(得分:2)
select distinct sng.*
from song sng
inner join albumsongs a_s on a_s.song_id = sng.id
inner join album alb on alb.id = a_s.album_id
inner join artist art on art.id = alb.artist_id
where art.name like '%NAME_CRITERIA_HERE%'
或
select * from song where id in (
select a_s.song_id
from albumsongs a_s
inner join album alb on alb.id = a_s.album_id
inner join artist art on art.id = alb.artist_id
where art.name like '%NAME_CRITERIA_HERE%'
)