質問

私は3つのテーブルを持つMySQL DBを持っています:

  1. アーティスト(Artist_id、名前)
  2. アルバム(アルバム_i、タイトル)と3番目の相関表:
  3. angubs_artists(album_id、artist_id)

私の目標は、すべてのアーティストのリストを表示し、各アーティストの名前、このアーティストがリリースしたすべてのアルバムのタイトルを表示することです。 (アルバムは1人のアーティストだけに「Belong」、アーティストはもちろん複数のアルバムを持っているかもしれません)

次のような結果を得ることができれば、それは素晴らしいことです。

1 "ac/dc" 3 "let be rock"
1「AC/DC」4「高電圧」
2「ディープパープル」45「マシンヘッド」
2「紫色の紫色」49「岩」
3 "Motorhead" 666 "スペードのエース" num

(各行の最初の数字はArtist_idであり、2番目はアルバム_idです)。

そのための適切なクエリは何ですか?

役に立ちましたか?

解決

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

他のヒント

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
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

このようなもの:

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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top