多对多的关系。我如何连接表格?

时间:2013-02-11 02:05:05

标签: php mysql database phpmyadmin many-to-many

我对多对多关系有疑问。我目前有三张桌子:

  • 电影
  • 类型
  • MOVIE_GENRE

在'movie'表格中我有专栏:

  • id_movie
  • title(例如:X战警)
  • rel_year(发布日期)
  • img_src(显示保存在服务器上的图像。这也是使用php链接到页面的网站上显示的内容)
  • page_link(链接到页面...)

在'genre'表中我有列:

  • id_genre
  • 名称(动作,冒险等......有14种类型)

在'movie_genre'表格中我有列:

  • id_movie_genre
  • id_movie
  • id_genre

我希望能够连接这些数据库,以便我可以根据页面按类型对我网站上的数据进行排序。例如,如果我想在“动作”下看到每部电影,我只想显示那些用该ID保存在我的数据库中的电影。

如何连接我的数据以匹配我的示例?欢迎任何帮助或建议,我仍然是mySQL和php的新手。

2 个答案:

答案 0 :(得分:2)

使用连接(SQL概念)。你应该很快熟悉连接。

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

编辑:在一部电影和三种类型之间插入关系:

INSERT INTO movie_genre
    (movie_id, genre_id)
VALUES
    (1, 1),
    (1, 2),
    (1, 3),

答案 1 :(得分: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。它的主键应该是它加入的两个表ID,而这就是全部。