1

以下のような例を使って練習していました(映画が多くのカテゴリに属する​​ことができ、カテゴリが多くのサブカテゴリに属する​​ことができることを考えていました)。

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) + 
+++++++++++++++++++++++++
4

1 に答える 1

0

サンプルデータを提案して、正しく理解できるかどうかを確認します。

  • 映画:「ソウ」、「トワイライト」、「小隊」
  • ジャンル:「スリラー」「コメディ」「アクション」
  • サブジャンル:「ハリウッド」、「フランス語」、「イタリア語」

この写真が正しければ、映画とサブジャンルの間に関係がないため、デザインが間違っている可能性があります。そうは言っても、これを試してみてください

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) 
LEFT OUTER JOIN genre_subgenre 
ON (genre_subgenre.genre_id = genre.genre_id) 
LEFT OUTER JOIN subgenre 
ON (subgenre.subgenre_id = genre_subgenre.subgenre_id) 
于 2012-02-11T10:15:33.750 に答える