SQL查询帮助从多个表中进行选择

时间:2014-02-22 22:18:43

标签: mysql sql

我不知道如何完成此查询....

问题是:

  

“对于2010年参演电影的每个人,请找到他们的名字   在他们所采取行动的所有电影中的总薪酬(即包括   那些不在2010年的人。“

需要的表:(其中title =电影标题,年份=电影年份,Pay =演员付费)

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

到目前为止我的查询:

SELECT A.name, A.pay FROM ActedIn A WHERE A.year = 2010;

返回:

+--------+--------+
|  Name  |   Pay  |
+--------+--------+
|  Dino  | 12.22  |
+--------+--------+
|  Miro  | 1238.22|
+--------+--------+

但是,这只会返回演员在2010年拍摄的特定电影的收入。

既然我有想要查看的演员的名字,我需要它来查找他们制作的所有其他电影(2010年之前或之后),并为他们所有的电影添加TOTAL PAY。

我知道我需要制作另一张表来查找这两位演员所做的所有电影,然后合并我认为的列。

任何帮助?

3 个答案:

答案 0 :(得分:1)

您可以使用单个聚合和having子句执行此操作:

select ai.name, sum(ai.pay)
from actedin ai
group by ai.name
having sum(case when ai.year = 2010 then 1 else 0 end) > 0;

having子句计算2010年每个“名称”作用的电影数量。如果此数字大于0,则保留结果集的名称。

答案 1 :(得分:1)

您还可以将exists与子查询一起使用。

 select name, sum(pay)
   from actedin a
 where exists (select 1 from actedin b where a.name = b.name and year = 2010)
 group by name

答案 2 :(得分:0)

select name, sum(pay)
  from actedin
 where name in (select name from actedin where year = 2010)
 group by name