在sql中查找对

时间:2014-10-08 03:15:46

标签: sql database sqlite schema

我想写一个查询,显示Dwayne Johnson电影的成对年份。例如,2003年和2004年,2004年和2005年,2005年和2006年,等等......

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'

1 个答案:

答案 0 :(得分: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'