使用MYSQL在同一个影片上插入多个actor

时间:2012-12-05 18:29:07

标签: php mysql sql

伙计们,我不知道如何问这个问题,我刚开始学习PHP和Mysql,而且我很难做一些我觉得很容易的事情。

让我们说我在Mysql Actors和Movies中有两个表。

演员有ID和NAME 电影也有相同的ID和名称。

在这个例子中,我们可以说我们的演员是1布拉德皮特,2爱德华诺顿和3杰克尼科尔森

电影是1个搏击俱乐部和2个海洋的十三个。

布拉德皮特和爱德华诺顿参加搏击俱乐部, 布拉德皮特在海洋十三号 杰克尼科尔森不在这些电影中。

如何将演员链接到我的Mysql数据库中的电影,以及如何使用PHP显示它们。

我非常感谢任何帮助,我真的迷失在这一个!感谢您的关注!

4 个答案:

答案 0 :(得分:3)

您可以使用JOINS

在简短的介绍中,让我们有另一张表relations。在那,电影和演员是相关的。 PRIMARY KEY将是两个ID的组合。

Actors Table
+----+----------------+
| ID |           NAME |
+----+----------------+
|  1 |      Brad Pitt |
|  2 |  Edward Norton |
|  3 | Jack Nicholson |
+----+----------------+

Movies Table
+----+--------------------+
| ID |               NAME |
+----+--------------------+
|  1 |         Fight Club |
|  2 | Ocean''s Thirteen. |
+----+--------------------+

现在我们可以拥有一个包含这两个ID的关系表。

+-------+-------+
| MOVIE | ACTOR |
+-------+-------+
|     1 |     1 |
|     1 |     2 |
|     2 |     1 |
+-------+-------+

这样,电影1将同时拥有演员1和2。

SQL查询

CREATE TABLE Actors (`id` int, `name` varchar(255));

INSERT INTO Actors (`id`, `name`) VALUES
(1, 'Brad Pitt'),
(2, 'Edward Norton'),
(3, 'Jack Nicholson');

CREATE TABLE Movies (`id` int, `name` varchar(255));

INSERT INTO Movies (`id`, `name`) VALUES
(1, 'Fight Club'),
(2, 'Ocean''''s Thirteen.');

CREATE TABLE stars (`movie` int, `actor` int);

INSERT INTO RelationShip (`movie`, `actor`) VALUES
(1, 1),
(1, 2),
(2, 1);

答案 1 :(得分:1)

在这种情况下,你有多对多的关系,这意味着,一个演员可能在很多电影中,一部电影可能有很多演员。

在这种情况下你做的是生成一个中间表,比方说 “MOVIE_ACTOR”应该有2列 MOVIE_ID和ACTOR_ID

这是一个很好的起点

所以,例如我想知道演员的所有电影,你会做出这样的查询:

SELECT movies.name FROM movie_actor LEFT JOIN movies ON movie_actor.movie_id = movies.id
WHERE movie_actor.actor_id = (SELECT id FROM actors WHERE name = 'brad pitt')

这是你如何创建表格 CREATE TABLE MOVIE_ACTOR(movie_id int,actor_id int);

INSERT INTO MOVIE_ACTOR (`movie`, `actor`) VALUES
(1, 1),
(1, 2),
(2, 1),
(2, 2);
祝你好运!

答案 2 :(得分:0)

您需要一个加入表ActorMovieMatch

此表有两个字段ActorIDMovieID,它们是其他表中主键ID的外键。

更新数据库时,您将独立于其他表更新此表。

答案 3 :(得分:0)

首先,您需要设置表结构。这是一个可能适合你的。为了便于阅读,我以图表的形式提供它们;你必须为所有这些创建MySQL语句。

首先,您的表类型:

Movie = ID,Title
Actor = ID,FirstName,LastName
StarredIn = ActorID,MovieID

接下来是表格的值:

Movie
------------------
1|Fight Club
2|Ocean's Thirteen

Actor
-------------------
1|Brad|Pitt
2|Edward|Norton
3|Jack|Nicholson

StarredIn
---------
1|1
2|1

注意如何简单地插入在StarredIn中连接的实体的ID。这是关系系统的核心和灵魂。跨表分布的数据,通过ID连接。这允许您根据需要多次放置任何actor。如果有一天Bradd Pitt决定改变他的名字,ID仍然指向同一个实体(你只是修改了actor表),它还会保护你免受名称更改等事情的侵害。

此外,虽然不是必需的,但您希望主键确保不添加任何重复项。我推荐Movie和Actor的ID上的主键以及StarredIn的复合主键(ActorID,MovieID)。

PHP部分;我建议你阅读mysqli或PDO,因为它们告诉你如何将PHP连接到MySQL。以下是一些可以帮助您入门的链接:

Mysqli:http://php.net/manual/en/book.mysqli.php

PDO:http://php.net/manual/en/book.pdo.php