これは簡単なはずですが、適切なクエリを作成したり、同等の状況を見つけたりすることができませんでした。結合したいテーブルが3つあるとしましょう:Artist、、、。(実際、私はこれらのテーブルを持っていませんが、私が使用しているテーブルには同等の関係があります。)AlbumTrack
それぞれartistが多くalbumのsを持つalbumことができ、それぞれが多くのsを持つことができますtrack。
artistテーブルにはインデックスが付けられており、artist_idアーティストに関する情報(、、、など)が含まれていnameます。addressphone number
albumテーブルはとにインデックスが付けartist_idられますalbum_id。アルバムの名前とその他の情報(、、など)が含まれていrecording dateますlocation。
テーブルは、、、およびでtrackインデックス付けされます。トラックの名前、長さなどが含まれています。artist_idalbum_idtrack_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つしか取得できません。trackalbumartist
これは機能するはずですが、機能しません。
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;
私の推測では、結合を明示的に宣言し、場合によっては結合をグループ化するために括弧を追加する必要がありますが、これを行うために完全に理解できるドキュメントを見つけることができませんでした。
だから...助けますか?ありがとう!