我目前在一家小型创业公司担任程序员,目的是在线提供按次付费内容,并且我被指派为电影目录开发元数据数据库
我有两个主要表格,电影和人,其中* movie_ID *和* people_ID *分别是每个表的主键。两个表都有多对多的关系。
为了表示我目前正在使用链接表的不同关系,例如, actor_movie 会为电影中的每个演员存储* movie_ID *和相应的* people_ID *,而 director_movie 表将存储* movie_ID *和导演* people_ID *。作家,作曲家和制作人也是如此。
现在,我的问题是我需要制作一个查询,将一个表中的所有演员,导演,制作人,作家,作曲家等返回到前端Web UI上作为列表所有参与电影的人。
我目前难以理解如何创建一个多个SELECT查询,它将根据* movie_ID *和* people_ID *将所有链接表连接在一起,然后返回中每个人的详细信息人表也是如此。
到目前为止我所写的例子是:
SELECT
movie.titleMovie,
people.namePeople,
FROM
movie movie
INNER JOIN actorlinkmovie acm ON acm.idMovie = movie.idMovie
INNER JOIN people people ON people.idPeople = acm.idPeople
我希望发生的是:
SELECT
movie.idMovie,
movie.titleMovie,
movie.descMovie,
movie.dateMovie,
movie.runtimeMovie,
movie.langMovie,
movie.ratingMovie,
people.namePeople
FROM
htv_movie movie
INNER JOIN htv_actorlinkmovie acm ON acm.idMovie = movie.idMovie
INNER JOIN htv_directorlinkmovie dcm ON dcm.idMovie = movie.idMovie
INNER JOIN htv_producerlinkmovie pcm ON pcm.idMovie = movie.idMovie
INNER JOIN htv_people people WHERE people.idPeople = dcm.idPeople AND people.idPeople = acm.idPeople AND people.idPeople = pcm.idPeople
它应该从一部电影中归还所有相关人员。
想要得到关于整个设计的一些信息,因为我在设计一个完整的数据库(实际上是第一次)时是一个新手,如果我需要扩展到大约5000部电影(当前的话),这个设计是否合适公司宗旨)。该数据库也将充当网站的后端。
感谢。
更新:使用PHP变量和模板SQL查询暂时制定了一个脏解决方案。看起来做多个内部连接毕竟不是必需的。谢谢你的建议。
答案 0 :(得分:0)
你可以实现这样的目标:
SELECT MovieName, dbo.GetDirector(MovieID), dbo.GetActors(MovieID), dbo.GetWriter(MovieID)FROM Movie
,其中
如果还有其他表,那么你也可以为这些表创建函数。
希望这有帮助。