1

我有一个关于多对多关系的问题。我目前有三个表:

  • 电影
  • 类型
  • 电影类型

在“电影”表中,我有列:

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

在“流派”表中,我有列:

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

在“movie_genre”表中,我有列:

  • id_movie_genre
  • id_movie
  • id_genre

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

如何连接我的数据以匹配我的示例?欢迎任何帮助或建议,我对 mySQL 和 php 还是很陌生。

4

2 回答 2

3

使用连接(一个 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),
于 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。它的主键应该是它连接的两个表 ID,仅此而已。

于 2013-02-11T02:09:29.407 回答