2017-06-12 108 views
-1

我想要做如下要求我的數據庫:數據庫請求

我尋找誰與他人擔任男主角(作業)在10分鐘的電影togehter工作人員。你有任何提示或建議,我該如何解決這個問題?

  • PRODUCTION(生產,標題)
  • MOVIE(生產 - >生產,型)
  • 人(人,名稱,實名,birth_country)WORKS(人 - >
  • PERSON,生產 - >生產作業)
+0

嗨Kahoona,你到目前爲止嘗試過什麼? –

回答

0

這似乎像這類問題更適合像的Neo4j圖形數據庫,但在這裏是一個關係型SQL解決方案:

select w1.person as person1 
     , w2.person as person2 
     , count(w1.production) as joint_productions 
from works w1 
    join works w2 
      on w1.production = w2.production 
where w1.person != w2.person 
group by w1.person, w2.person having count(w1.production) >= 10 
order by w1.person, w2.person; 

這顯示了演員和他們在一起的電影數量。它包括的倒數,即

bill murray, dan ackroyd, 10 
dan ackroyd, bill murray, 10 

如果你只是想將一組名稱,你可以這樣做:

select distinct w1.person 
from works w1 
    join works w2 
      on w1.production = w2.production 
where w1.person != w2.person 
group by w1.person, w2.person having count(w1.production) >= 10 
order by w1.person; 
+0

感謝您的快速回復。 「人」只是一個人的身份。我想展示他們的真名。在那裏,我也必須加入人員表嗎?是否有可能將您的代碼用作子請求並在主要請求中加入人員表格? – Kahoona

+0

可能嗎?當然 – APC

0

我可能會發現沒有一個子請求的解決方案。這是對的嗎?

select w1.person as person1, w2.person as person2, p1.name , p2.name, count(w1.production) as joint_productions 
from works w1 join works w2 on w1.production = w2.production 
join person p1 on w1.person = p1.person 
join person p2 on w2.person = p2.person 
where w1.person != w2.person 
group by w1.person, p1.name, p2.name, w2.person having count(w1.production) 
>= 10 order by w1.person, w2.person