2012-02-11 13 views
1

私は以下のように作成した例で練習していました(映画は多くのカテゴリに属していて、多くのサブカテゴリを持つ)。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) + 
+++++++++++++++++++++++++ 
+0

私は3つだけのエンティティを参照し、私たちはテーブルの名前を提供していない。してください、より正確にしよう – DonCallisto

+0

LEFT OUTER JOINとして他の結合を試しましたか? –

答えて

0

私はそれが権利を取得かどうかを確認するためにサンプルデータを提案してみましょう:

  • 作品: "ソウ"、 "トワイライト"、 "プラトーン"
  • ジャンル: "スリラー"、「コメディ」、 『アクション』
  • サブジャンル: 『この絵が正しい場合betw関係がないようハリウッド』、 『フランス語』、 『イタリア語』

は、あなたのデザインが間違っている可能性がありますムービーとサブジェンそれは試してみた

+0

ありがとうございました!私は、映画のためのものとジャンルのためのものの2つの左外部結合を置くことを考えていませんでした。それはうまくいった! – mickael

+0

私はデザインをもう一度見直して、映画をサブジャンルにリンクする方がいいかどうかを確認してください。まだデータベースについて学ぶにはかなりの時間がかかります:) – mickael

関連する問題