これは簡単なはずですが、適切なクエリを作成したり、同等の状況を見つけたりすることができませんでした。結合したいテーブルが3つあるとしましょう:Artist
、、、。(実際、私はこれらのテーブルを持っていませんが、私が使用しているテーブルには同等の関係があります。)Album
Track
それぞれartist
が多くalbum
のsを持つalbum
ことができ、それぞれが多くのsを持つことができますtrack
。
artist
テーブルにはインデックスが付けられており、artist_id
アーティストに関する情報(、、、など)が含まれていname
ます。address
phone number
album
テーブルはとにインデックスが付けartist_id
られますalbum_id
。アルバムの名前とその他の情報(、、など)が含まれていrecording date
ますlocation
。
テーブルは、、、およびでtrack
インデックス付けされます。トラックの名前、長さなどが含まれています。artist_id
album_id
track_nbr
私がやろうとしているのは、次のようなレポートを作成することです。
Artist|Album|Track#|Track Name
The Wizard of Frobozz|Zork I|01|The White House
The Wizard of Frobozz|Zork I|02|Eaten by a Grue
The Wizard of Frobozz|Zork I|03|Take the Sword
The Wizard of Frobozz|Zork I|04|Don't Forget the Lantern
The Wizard of Frobozz|Zork II|01|Waiting for the Volcano Gnome
The Wizard of Frobozz|Zork II|02|On the Left Bank of Zork
The Wizard of Frobozz|Zork II|03|In the Oddly Angled Room
artist
とalbum
テーブルを結合してすべてを取得できますが、テーブルalbums
を追加すると、-の組み合わせごとtrack
に1つしか取得できません。track
album
artist
これは機能するはずですが、機能しません。
select a.name, l.album, t.track_nbr, t.track_name
from track t, album l, artist a
where t.artist_id = l.artist_id
and l.artist_id = a.artist_id
and t.album_id = a.album_id
order by a.name, l.album, t.track_nbr;
私の推測では、結合を明示的に宣言し、場合によっては結合をグループ化するために括弧を追加する必要がありますが、これを行うために完全に理解できるドキュメントを見つけることができませんでした。
だから...助けますか?ありがとう!