基于20个表的Sum SQL值

时间:2018-01-16 17:50:21

标签: mysql sql

我有20个相同列的表,下面有几个例子:

Australian GP
DRIVER | Points
================
HAM    | 25
VET    | 20
RIC    | 15

Japanese GP
Driver | Points
==============
HAM    | 25
VET    | 20
RIC    | 15

Malaysian GP
Driver | Points
RIC    | 25
HAM    | 20
VET    | 15

我打算加入所有20个表和所有20个驱动程序数据,如下所示:

Championship Standings
Driver   | Points
HAM      | 70
VET      | 65
RIC      | 50

基于强烈的谷歌搜索和大量的混乱(我在SQL上很糟糕,因为我没有空闲时间在我的大学之外学习),我得出结论使用内部联接和子查询如下(我不知道是不是正确或笑声):

select driverid, point
from usa a, russia b, japan c
    inner join (select driverid as Driver, sum(point) group by points);

我还认为我必须编写20个内部联接(如下例所示)来连接表之间的驱动程序值吗? (我为Driver创建了一个表,其中包含driverid作为主键。所有用于写入点的表都使用来自驱动程序表的外键)

非常感谢有关此案例的任何帮助

2 个答案:

答案 0 :(得分:0)

你想要联合所有`:

select driver, sum(points)
from ((select driver, points from usa) union all
      (select driver, points from russia) union all
      . . .
     ) c
group by driver;

答案 1 :(得分:0)

试试这个:

Select * From Table1

UNION ALL

Select * From Table2

UNION ALL

Select * From Table3
.
.
.
GROUP BY Driver

Table1,Table2,Table3等是实际表的名称