2014-10-08 46 views
1

我想寫一個查詢,顯示有一個Dwayne Johnson電影的年份對。例如,2003年和2004年,2004年和2005年,2005年和2006年,等等...在sql中查找對

Example Demo: 
Year, Year 
2001, 2002 
2003, 2004 
2005, 2006 

這裏是我的架構:

Actor: 
    aid INT PRIMARY KEY 
    first VARCHAR 
    last VARCHAR 

Movie: 
    mid INT PRIMARY KEY 
    title VARCHAR 
    year INT 

Role: 
    aid INT REFERENCES Actor(aid) 
    mid INT REFERENCES Movie(mid) 

這是我目前有:

select distinct m1.year, m2.year from movie m1, movie m2 
JOIN role r ON m1.mid = r.mid JOIN actor a ON r.aid = a.aid 
where a.first='Dwayne' AND a.last='Johnson' 

回答

3

您必須兩次加入movierole表以獲得所有連續的年份。

select m1.year, m2.year 
from movie m1 
join role r1 on r1.mid = m1.id 
join actor a on r.aid = a.aid 
join role r2 on r2.aid = a.aid 
join movie m2 on r2.mid = m2.id 
where m1.year + 1 = m2.year 
and a.first='Dwayne' and a.last='Johnson' 
+0

這很接近,我之前做過這樣的事情......唯一的事情是我需要檢查它以確保年份相互正確,所以我不想1991年和1995年出現,但我想1991年和1992年或1993年和1994年出現...請檢查我的例子在問題中。這是我感到困惑的部分。 – user4100421 2014-10-08 04:04:58

+1

啊,我從m1.year減去m2.year,並在WHERE子句中檢查它是否等於1。這有助於其他人查看。 – user4100421 2014-10-08 04:20:16