2012-06-14 100 views
-1
Movie(title, year, director, budget, earnings) 
Actor(stagename, realname, birthyear) 
ActedIn(stagename, title, year, pay) 
CanWorkWith(stagename, director) 

找到这样的演员 与stagename1在同一部电影与stagename2演员担任,但赚得少 的,作用艺名的所有对(改名stagename1和stagename2)电影。SQL表与自身比较

SELECT A.stagename, B.stagename 
FROM ActedIn A 
LEFT JOIN ActedIn B ON A.title = B.title AND A.year = B.year 
      AND B.pay > A.pay 
WHERE B.name IS NOT NULL 

不能确定此处判定B.name IS NOT NULL是有效

+0

它是有效的,但它基本上将查询转换为INNER JOIN。 –

+1

它是B.stagename不是NULL吗? –

+0

是stagename谢谢 – George

回答

1
SELECT A.stagename, B.stagename 
FROM ActedIn A 
INNER JOIN ActedIn B ON A.title = B.title 
AND A.year = B.year AND B.pay > A.pay 
WHERE B.name IS NOT NULL 

LEFT JOIN将是没有用的,如果你不想NULL值弗朗B.