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-总和正在成倍增加_Mysql_Sql_Join_Sum - Fatal编程技术网

MySQL-总和正在成倍增加

MySQL-总和正在成倍增加,mysql,sql,join,sum,Mysql,Sql,Join,Sum,我试图从表a中获取数据,从左连接表b中获取一个和,从另一个左连接表c中获取另一个和 那么,把a和b结合起来: 输出 身份证件 名称 总量 1. 测验 14 这是常见的连接乘法。可能的解决方案-在子查询中为每个聚合的表聚合一个表,然后联接 选择a.id、a.name、sum\u b、sum\u c 从表a 左联接选择id_表_a,总和数量总和_b 来自表b b.id\U表上的按id\U表\U a b分组=a.id 左联接选择id\u表\u a、数量总和\u c 来自表c c.id\u table\

我试图从表a中获取数据,从左连接表b中获取一个和,从另一个左连接表c中获取另一个和

那么,把a和b结合起来:

输出

身份证件 名称 总量 1. 测验 14
这是常见的连接乘法。可能的解决方案-在子查询中为每个聚合的表聚合一个表,然后联接

选择a.id、a.name、sum\u b、sum\u c 从表a 左联接选择id_表_a,总和数量总和_b 来自表b b.id\U表上的按id\U表\U a b分组=a.id 左联接选择id\u表\u a、数量总和\u c 来自表c c.id\u table\u a=a.id上的按id\u table\u a c分组;
您可能会发现,最佳性能是:

SELECT a.id, a.name, 
       (SELECT SUM(b.quantity) 
        FROM table_b b
        WHERE b.id_table_a = a.id
       ) as sum_b,
       (SELECT SUM(c.quantity) 
        FROM table_c c
        WHERE c.id_table_a = a.id
       ) as sum_c
FROM table_a a;
对于性能,您需要表\投标\表\数量和表\ cid\表\数量上的索引

SELECT a.id, a.name, 
       (SELECT SUM(b.quantity) 
        FROM table_b b
        WHERE b.id_table_a = a.id
       ) as sum_b,
       (SELECT SUM(c.quantity) 
        FROM table_c c
        WHERE c.id_table_a = a.id
       ) as sum_c
FROM table_a a;