2014-12-05 58 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