我有桌子和桌子b
tablea:
Nama Jumlah
A 66
B 95
C 47
E 57
F 52
表B:
Nama Jumlah Gaji
A 35 47
B 28 51
C 18 24
D 27 30
E 30 29
G 31 16
如何进行查询,可以将一个表中的两个表组合成一个像这样的
结果:
Nama Jumlah Gaji
A 101 47
B 123 51
C 65 24
D 27 30
E 87 29
F 52 0
G 31 16
这是我的疑问。但我不能得到那样的结果。
SELECT a.nama, (a.jumlahtotala+b.jumlahtotalb) AS Jumlah FROM (SELECT nama, SUM(jumlah) AS jumlahtotala FROM tablea GROUP BY nama) a JOIN (SELECT nama, SUM(jumlah) AS jumlahtotalb, SUM(gaji) AS gaji FROM tableb GROUP BY nama) b GROUP BY a.name
感谢您的帮助
EDITED
对不起评论中的另一个问题
答案 0 :(得分:2)
尝试加入两个表格,如:
SELECT b.Nama, IFNULL(a.Jumlah, 0) + b.Jumlah, b.Gaji
FROM tablea a RIGHT JOIN tableb b
ON a.Nama = b.Nama
答案 1 :(得分:0)
如果Nama
或tablea
中tableb
不唯一,或tablea
中tableb
中没有匹配行的行,{例如:
表A:
Nama Jumlah
A 66
B 95
C 47
C 18
表B:
Nama Jumlah Gaji
A 35 47
C 0 24
D 27 30
Z NULL 99
如果可接受的结果是返回Nama
的每个值的一次出现以及Jumlah
和Gaji
的总和,则采用一种方法(假设{{1}的数据类型1}}和Nama
列是兼容的),并且假设没有要求以特定顺序返回行,一个选项是将两个集合与Jumlah
运算符组合成一个派生表,然后使用UNION ALL
聚合。
例如:
SUM()
由于派生表(即MySQL处理派生表的方式),这可能不是大型集合的最有效方法。