1

多対多の関係について質問があります。現在、次の 3 つのテーブルがあります。

  • 映画
  • ジャンル
  • 映画のジャンル

「movie」テーブル内には、次の列があります。

  • id_movie
  • タイトル(例:X-Men)
  • rel_year (リリース日)
  • img_src (サーバーに保存された画像を表示します。これは、ページへのリンクに php を使用して Web サイトに表示されるものでもあります)
  • page_link (ページへのリンク...)

「ジャンル」テーブル内に列があります。

  • id_genre
  • 名前(アクション、アドベンチャーなど…14ジャンルあります)

「movie_genre」テーブル内には、次の列があります。

  • id_movie_genre
  • id_movie
  • id_genre

これらのデータベースを接続して、Web サイトのデータをページに応じてジャンル別に分類できるようにしたいと考えています。たとえば、「アクション」の下にあるすべての映画を見たい場合、データベースに保存されているものだけをその ID で表示したいとします。

例に一致するようにデータを接続するにはどうすればよいですか? ヘルプやアドバイスは大歓迎です。私はまだ mySQL と php に非常に慣れていません。

4

2 に答える 2

3

結合 (SQL の概念) を使用します。すぐに結合に慣れる必要があります。

SELECT
    *
FROM
    movie
    NATURAL JOIN movie_genres
    NATURAL JOIN genre
WHERE
    genre.name = 'Action'

編集: 1 つの映画と 3 つのジャンルの間の関係の挿入:

INSERT INTO movie_genre
    (movie_id, genre_id)
VALUES
    (1, 1),
    (1, 2),
    (1, 3),
于 2013-02-11T02:07:20.477 に答える
0

ピンチで、これはテーブルに参加します。WHERE次に、句を使用して結果を制限できます。

SELECT g.name, m.*
FROM movie m
JOIN movie_genre mg ON mg.id_movie = m.id_movie
JOIN genre g ON g.id_genre = mg.id_genre;

リンク テーブル ( movie_genre) は独自の一意の ID を持つべきではないことに注意してください。その主キーは、結合する 2 つのテーブル ID である必要があり、それだけです。

于 2013-02-11T02:09:29.407 に答える