伙计们,我不知道如何问这个问题,我刚开始学习PHP和Mysql,而且我很难做一些我觉得很容易的事情。
让我们说我在Mysql Actors和Movies中有两个表。
演员有ID和NAME 电影也有相同的ID和名称。
在这个例子中,我们可以说我们的演员是1布拉德皮特,2爱德华诺顿和3杰克尼科尔森
电影是1个搏击俱乐部和2个海洋的十三个。
布拉德皮特和爱德华诺顿参加搏击俱乐部, 布拉德皮特在海洋十三号 杰克尼科尔森不在这些电影中。如何将演员链接到我的Mysql数据库中的电影,以及如何使用PHP显示它们。
我非常感谢任何帮助,我真的迷失在这一个!感谢您的关注!
答案 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。
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
此表有两个字段ActorID
和MovieID
,它们是其他表中主键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。以下是一些可以帮助您入门的链接: