2014-12-05 59 views
1

使用内部连接后出现了一些问题,这是我的查询。内部连接后消失

select sum(total) as total,id 
from 
(
select * from midsemester union 
select * from endsemester 
) as vij 
group by id 

这是表:

表名:midsemester

 
ID Grade 
---------- 
1 10 
2 30 
3 40 

表名:endsemester

 

ID Grade 
---------- 
1 30 
2 40 
3 20 

,我需要总结这些表新表呼叫总计。这是我期待的结果。

表名:总

 
ID Grade 
---------- 
1  40 
2  70 
3  60 

我其实只需要总结了等级的值使用id为3台。并尝试使用内部连接多次,它的工作。但是当我再次检查第三张表时,记录是空的。希望有任何帮助,谢谢! :)

+0

你需要联合所有。 检查: http://stackoverflow.com/questions/49925/what-is-the-difference-between-union-and-union-all – Hozikimaru 2014-12-05 06:34:43

+0

我发布这个问题之前看见了,尝试使用union all,但它仍然是一样的。无论如何,谢谢你:) – 2014-12-05 06:44:11

+0

我会建议不要有两个不同的表,存储相同的东西。你应该将“中期学习”和“最终学期”结合到一个与年级相关的表格中,并引入一个专栏,指出该学期的哪一部分是成绩。 – siride 2014-12-05 13:55:07

回答

1

通过ID如果u根据ID要增加数据为了

试试这个

insert into total(ID,Grade) select midsemester.ID,(midsemester.grade+endsemester.grade)as total from midsemester 
inner join endsemester 
on midsemester.ID=endsemster.ID 

使用顺序

+0

谢谢你!它工作完美! – 2014-12-05 07:14:28

+0

@sunstation:好吧,很高兴我帮助你 – 2014-12-05 07:18:47

1

试试这个:

INSERT INTO total (Id, Grade) 
SELECT id, SUM(grade) AS total 
FROM (SELECT id, grade FROM midsemester 
     UNION ALL 
     SELECT id, grade FROM endsemester 
    ) AS vij 
GROUP BY id 
+0

你正在总结我的朋友的整个领域,我需要的是一个接一个的总结。但无论如何感谢帮助:) – 2014-12-05 06:36:20

+0

我需要每个记录得到总结,不完全。请查看我的帖子中的第三张表格。这就是我真正想要的结果。没有冒犯,但是当我使用你的查询结果是这样的:ID = 12,和Grade = 60 – 2014-12-05 06:41:12

+0

哦,我的坏。我对这个误解感到非常抱歉,所以我需要加入中期和年底的成绩,并把它放在总表上。而且它似乎是当我使用其他查询它不插入到第三个表。 – 2014-12-05 07:08:37

1

试试下面的代码:

select a.id,(a.grade+b.grade) as sum 
into total 
from midsemester a 
left join endsemester b 
    on a.id = b.id 
+0

我怎么把这个放在第三张桌子上?它没有插入记录bro。 – 2014-12-05 07:03:16

+0

create tabel total(id integer,Grade integer);在a.id = b.id中插入总选a.id,(a.grade + b.grade)作为总和,从中期a left join endsemester b ; – 2014-12-05 07:15:16