Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL查询帮助从多个表中选择_Mysql_Sql - Fatal编程技术网

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

Mysql SQL查询帮助从多个表中选择,mysql,sql,Mysql,Sql,我不知道如何完成这个查询 问题是: “对于2010年出演电影的每个人,请找到他们的名字 以及他们出演的所有电影的总片酬(即包括 那些不是在2010年。” 所需表格:(其中title=电影片名,year=电影年,Pay=演员薪酬) 到目前为止,我的问题是: SELECT A.name, A.pay FROM ActedIn A WHERE A.year = 2010; 这将返回: +--------+--------+ | Name | Pay | +--------+--------

我不知道如何完成这个查询

问题是:

“对于2010年出演电影的每个人,请找到他们的名字 以及他们出演的所有电影的总片酬(即包括 那些不是在2010年。”

所需表格:(其中title=电影片名,year=电影年,Pay=演员薪酬)

到目前为止,我的问题是:

SELECT A.name, A.pay FROM ActedIn A WHERE A.year = 2010;
这将返回:

+--------+--------+
|  Name  |   Pay  |
+--------+--------+
|  Dino  | 12.22  |
+--------+--------+
|  Miro  | 1238.22|
+--------+--------+
但是,这只会返还该演员在2010年拍摄的特定电影所获得的报酬

现在我有了我想查找的演员的名字,我需要它来查找他们制作的所有其他电影(2010年之前或之后),并将他们拍摄的所有电影的总收入加起来

我知道我需要再做一个表格来找到这两位演员演过的所有电影,然后合并我认为是的专栏


有什么帮助吗?

您可以通过一个聚合和
拥有
子句来实现这一点:

select name, sum(pay)
  from actedin
 where name in (select name from actedin where year = 2010)
 group by name
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,则保留结果集的名称。

您也可以将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

您不需要另一个表,但您确实需要使用子查询。您不需要子查询。可能“需要”不是最好的词,但是对于这样一个简单的问题,最好的解决方案是使用子查询。@ShWiVeL否。最好的解决方案是使用连接。为什么我们要假设使用内联视图进行连接会比这更快?我们没有可以确定这一点的信息。
 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