[英]SQL Multiple Inner Joins on the same field
我目前在一家小型创业公司中担任程序员,旨在在线提供按次计费的内容,并被分配为电影目录开发元数据数据库
我有两个主表, movie和people ,其中* 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)
哪里
如果还有其他表,那么您也可以为这些表创建函数。
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.