鑑於這些表:SQL查詢返回多個表中的元素通過一定的條件下
movie (id, name, year)
actor (id, fname, lname)
cast (movieid, actorid, role)
我想找到行爲者必須在同一電影3個或更多不同的角色,在2013年,我需要的名字演員姓名,電影名稱以及他們在該電影中的角色數量。
到目前爲止,我有:
select a.fname, a.lname (select m.name (select count(distinct c.role)
from actor a, cast c
where a.id=c.actorid and
c.movieid=m.id and m.year =
2013)
from movie m)
group by a.fname, a.lname
having count(distinct c.roles) >=3
我的直覺是,最內側的查詢將計算每個演員在2013年打了一個電影角色的數量下一級查詢將選擇那些電影的名字而最外層將返回在每部電影中有3個或更多不同角色的演員的名字。
例如:
電影
id name year
1 a 1990
2 b 2013
3 c 2000
4 d 1998
5 e 2013
演員
id fname lname
1 bob dylan
2 angelina jolie
3 meghan fox
5 jane doe
蒙上
actorid movieid role
1 2 nanny
1 2 maid
1 2 butler
2 3 main
1 5 baby
1 5 kid
1 5 teen
4 2 main
5 4 support
查詢應返回如下:
a.fname a.lname m.name count(distinct roles in movie)
bob dylan a 3
bob dylan e 3
有可能是一個演員是曾在多部影片3個或更多不同的角色,在2013年在電影中的那麼鮑勃打了3個角色和電影中的E 3級的角色這兩者都是從2013年開始,其結果應清單鮑勃曾經兩次電影和3計數和3
如果你對子查詢和連接不穩定,我建議通過[SQL Zoo](http://sqlzoo.net/)教程。 –
這個家庭作業問題想讓你做兩個簡單的連接。 –
爲什麼我們仍然在使用舊式逗號分隔符進行連接操作? *這是什麼年份? – spencer7593