MySQL相関表を介して2つのテーブルからデータを取得する
-
09-10-2019 - |
質問
私は3つのテーブルを持つMySQL DBを持っています:
- アーティスト(Artist_id、名前)
- アルバム(アルバム_i、タイトル)と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
所属していません StackOverflow