0

我有一个带有 3 个表的 MYSQL Db:

  1. 艺术家(艺术家 ID,姓名)
  2. 专辑 (album_i,title) 和第三个相关表:
  3. 专辑_艺术家(album_id,artist_id)

我的目标是显示所有艺术家的列表,并在每个艺术家的名字旁边显示该艺术家发行的所有专辑的标题。(一张专辑“属于”一位艺术家,一位艺术家当然可能拥有不止一张专辑)

如果 a 可以得到如下结果,那就太好了:

1“ac/dc”3“让摇滚”
1“ac/dc”4“高压”
2“深紫”45“机头”
2“深紫”49“in rock”
3“motorhead”666”黑桃王牌" num

(每行中的第一个数字是艺术家 ID,第二个是专辑 ID)。

什么是合适的查询?

4

4 回答 4

1
SELECT ar.artist_id, ar.name, al.album_id, al.title
    FROM artists ar
        INNER JOIN albums_artists aa
            ON ar.artist_id = aa.artist_id
        INNER JOIN albums al
            ON aa.album_id = al.album_id
    ORDER BY ar.name, al.title

而且,只是为了好玩,如果有一个艺术家还没有发行任何专辑怎么办。

SELECT ar.artist_id, ar.name, al.album_id, al.title
    FROM artists ar
        LEFT JOIN albums_artists aa
            INNER JOIN albums al
                ON aa.album_id = al.album_id
            ON ar.artist_id = aa.artist_id
    ORDER BY ar.name, al.title
于 2010-12-13T22:11:54.533 回答
1
select
  artist_id,
  album_id,
  ...
from
  albums_artists
join albums on albums.id = albums_artists.album_id
join artists on artists.id = albums_artists.artist_id
于 2010-12-13T22:12:14.763 回答
0

像这样的东西:

select ar.artist_id, ar.name, al.album_id, al.title
  from artists ar
  join album_artists aa on aa.artist_id = ar.artist_id
  join albums al on al.album_id = aa.album_id and ar.artist_id = aa.artist_id
order by ar.artist_id
于 2010-12-13T22:09:28.350 回答
0
select a.artist_id, a.name, al.album_id, al.title
from artists a, albums al, albums_artists ala
where a.artist_id = ala.artist_id
and ala.album_id = al.album_id
order by ala.artist_id
于 2010-12-13T22:09:28.343 回答