繁体   English   中英

SQL多个内部联接在同一字段上

[英]SQL Multiple Inner Joins on the same field

我目前在一家小型创业公司中担任程序员,旨在在线提供按次计费的内容,并被分配为电影目录开发元数据数据库

我有两个主表, moviepeople ,其中* movie_ID *和* people_ID *分别是每个表的主键。 两个表都具有多对多关系。

为了表示不同的关系,我目前使用链接表,例如, actor_movie将存储电影中每个演员的* movie_ID *和相应的* people_ID *,而director_movie表将存储* movie_ID *和导演)* people_ID *。 作家,作曲家和制作人也是如此。

现在,我的问题是我需要设计一个查询,该查询将所有演员,导演,制片人,作家,作曲家等返回到一个表中,并作为所有人员的列表传递到前端Web UI上。参与电影。

我目前对如何创建一个多个SELECT查询感到困惑,该查询将基于* movie_ID *和* people_ID *将所有链接表联接在一起,然后还返回people表中每个人的详细信息。

到目前为止,我所写的示例是:

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查询。 看起来根本不需要进行多个内部联接。 谢谢你的建议。

您可以这样实现目标:

从电影中选择MovieName,dbo.GetDirector(MovieID),dbo.GetActors(MovieID),dbo.GetWriter(MovieID)

哪里

  • dbo.GetDirector(MovieID)是将返回影片中导演的函数。
  • dbo.GetActors(MovieID)是一个函数,它将返回电影中的演员。
  • dbo.GetWriter(MovieID)是一个将返回电影中的作者的函数。

如果还有其他表,那么您也可以为这些表创建函数。

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM