2014-02-22 106 views
0

我想解决这个问题,但我不能得到很远。SQL比较数据对

的问题是:

“中找到名字的对(重新命名为NAME 1和NAME),其中每个NAME1行为在同一膜NAME2但已经赢得了更多的报酬为行事说电影”。

为演过表:

 
ActedIn (name:varchar, title:varchar, year:int, pay:real) 

我的查询到目前为止是:

SELECT B.name FROM ActedIn B WHERE B.title IN (
SELECT A.title FROM ActedIn A GROUP BY A.title HAVING COUNT(*) = 2); 

这将返回:(无标题,并支付列,这是好的 - 我只是包括它,所以你可以看到)

+---------------+--------------+ 
| name | title | EXAMPLE PAY | 
+------+--------+--------------+ 
| Dino | movie1 | 500.25  | 
+------+--------+--------------+ 
| Miro | movie1 | 40.15  | 
+------+--------+--------------+ 
| Tino | movie2 | 90.15  | 
+------+--------+--------------+ 
| Kiko | movie2 | 3422.24  | 
+------+--------+--------------+ 
| Bino | movie3 | 653.00  | 
+------+--------+--------------+ 
| Kiko | movie3 | 245.52  | 
+------+--------+--------------+ 

现在我需要以某种方式比较每个电影片名中的演员配对,并且只返回其中actor1的付费高于actor2的配对。

在我上面提供的情况,结果说的查询应该是:

Dino, Miro in Movie1 
Bino, Kiko in Movie3 

谢谢!

回答

2
select x.name as name1, y.name as name2, x.title as movie 
from actedin x join actedin y on x.title = y.title 
where x.example_pay > y.example_pay 
+0

更改为使用连接关键字 –

+0

这解决了我的问题谢谢! – Borovez