以下のような例を使って練習していました(映画が多くのカテゴリに属することができ、カテゴリが多くのサブカテゴリに属することができることを考えていました)。
2つの多対多の関係を連鎖させることが正しいかどうかはわかりませんが(私はそれらをいくつかの1対多の関係に分割します)、クエリを実行すると、かなり奇妙な結果が得られます。
ジャンル名のない映画も含め、すべての映画の映画のタイトルとジャンル名を取得するにはどうすればよいですか?私はこれに似たクエリを使用していますが、それらのタイトルを返していません:S
最初の多対多の関係の後で停止すると、結果は正しいように見えますが、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) +
+++++++++++++++++++++++++