在1列mysql中组合两列

时间:2015-01-31 06:13:46

标签: mysql

我有桌子和桌子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
对不起评论中的另一个问题

2 个答案:

答案 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)

如果Namatableatableb不唯一,或tableatableb中没有匹配行的行,{例如:

表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的每个值的一次出现以及JumlahGaji的总和,则采用一种方法(假设{{1}的数据类型1}}和Nama列是兼容的),并且假设没有要求以特定顺序返回行,一个选项是将两个集合与Jumlah运算符组合成一个派生表,然后使用UNION ALL聚合。

例如:

SUM()

由于派生表(即MySQL处理派生表的方式),这可能是大型集合的最有效方法。