私は以下のように作成した例で練習していました(映画は多くのカテゴリに属していて、多くのサブカテゴリを持つ)。2つのチェインされた多対多リレーションシップからデータを取得する
2つの多対多リレーションシップが正しいかどうかはわかりませんが(私はそれらを複数のリレーションシップで分割しています)、クエリを作成するとかなり奇妙な結果に陥ります。
ジャンル名のない映画でも、映画のタイトルとジャンル名をどのように取得できますか? S
1番目の多対多リレーションシップ後に停止すると、結果は正しいように見えますが、2回目のリレーションシップを追加すると(下のクエリで)、私は何も受け取っていない...任意の提案pls?
SELECT movie.title, genre.name
FROM movie
LEFT OUTER JOIN movie_genre
ON (movie.movie_id = movie_genre.movie_id)
JOIN genre
ON (genre.genre_id = movie_genre.genre_id)
JOIN genre_subgenre
ON (genre_subgenre.genre_id = genre.genre_id)
JOIN subgenre
ON (subgenre.subgenre_id = genre_subgenre.subgenre_id)
+++++++++++++++++
+ Movie ID (PK) +
+ Movie Title +
+++++++++++++++++
|
|
|
+++++++++++++++++
+ Movie ID (FK) +
+ Genre ID (FK) +
+++++++++++++++++
|
|
|
+++++++++++++++++++
+ Genre ID (PK) +
+ Genre Name +
+++++++++++++++++++
|
|
|
++++++++++++++++++++
+ Genre ID (FK) +
+ Subgenre ID (FK) +
++++++++++++++++++++
|
|
|
+++++++++++++++++++++++++
+ Subrenre ID (PK) +
+ Subgenre Name (FK) +
+++++++++++++++++++++++++
私は3つだけのエンティティを参照し、私たちはテーブルの名前を提供していない。してください、より正確にしよう – DonCallisto
LEFT OUTER JOINとして他の結合を試しましたか? –