在此先感谢,我是数据库设计和查询的新手我有 4 个表,即 film_table 、actors_table 、director_table 和 producer_table 如下:
电影表
(film_id、film_name、actor_id、producer_id、director_id)
actor_table(与film_table有多对多的关系)
(actor_id,actor_name)
director_table(与film_table 是多对一的关系)
(director__id,director_name)
producer_table(与 film_table 是多对一的关系)
(producer_id, producer_name)
我还有一个形式为的映射表:
Actor_Film_Mapping
(演员_id,电影_id)
我需要查询数据库以获取以下格式的数据:
(电影姓名、演员姓名、制片人姓名、导演姓名)
我尝试了以下查询:
SELECT f.film_name
FROM Film_table f
INNER JOIN Actor_table a
on f.actor_id= a.actor_id
INNER JOIN Actor_Film_Mapping afm
on a.actor_id = afm.actor_id;
主要中的任何演员数据film_table
似乎都不合适,因为您(正确地)在映射表中强制执行了电影和演员之间的多对多关系。我会放弃该字段,除非它用于与此处的问题无关的某些目的。
您的问题似乎只需要在各种 ID 字段上将所有表连接在一起。因为电影对演员多到很多,你的结果对于任何给定的电影都会有film_name
,producer_name
和director_name
重复的每一个值actor_name
,但该查询会给你,你需要为你提出的答案所有的数据点:
SELECT
f.film_name,
a.actor_name,
p.producer_name,
d.director_name
FROM
film_table AS f
JOIN
Actor_Film_Mapping AS afm
ON afm.actor_id = f.film_id
JOIN
actor_table AS a
ON a.actor_id = afm.actor_id
JOIN
producer_table AS p
ON p.producer_id = f.producer_id
JOIN
director_table AS d
ON d.director__id = f.director__id;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句