我目前在一家小型創業公司,旨在於提供在線付費觀看的內容是一個程序員,我被分配到開發電影目錄SQL多內部聯接在同一領域
元數據庫我有兩個主表,電影和人,其中* movie_ID *和* people_ID *分別爲每個表的主鍵。兩個表都有多對多的關係。
爲了表示我目前使用的鏈接表不同的關係,例如,actor_movie將存儲在* movie_ID *和相應的* people_ID *每個在電影中的演員,而director_movie表將存儲* movie_ID *和導演* people_ID *。作家,作曲家和製作人也是如此。
現在,我的問題是,我需要制定一個查詢,返回所有的演員,導演,製作人,作家,作曲家等等在一個單獨的表中作爲一個列表在前端Web UI上傳遞所有參與電影的人。
我目前很難理解如何創建一個基於* movie_ID *和* people_ID *將所有鏈接表加入到一起的多個SELECT查詢,然後返回每個人在人中的每個人的詳細信息表也是如此。
和舉例的是我至今寫的是:
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查詢制定了一個骯髒的解決方案。看起來好像做多個內部連接並不是必需的。謝謝你的建議。
你是否想要每個人的所有行和他們的上下文/部分在電影的幕後?或者,你是否想要一列顯示「導演」,「作家」,「演員」等所有名字...... – DRapp 2011-03-07 11:57:53
如果可能,我寧願擁有多列。 – 2011-03-08 03:36:00