簡體   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