2015-01-31 4 views
0

я есть TableA и стол бобъединить два столбца в 1 столбце MySQL

TableA:

Nama Jumlah 
A  66 
B  95 
C  47 
E  57 
F  52 

TableB:

Nama Jumlah Gaji 
A  35  47 
B  28  51 
C  18  24 
D  27  30 
E  30  29 
G  31  16 

как сделать запрос, который может объединить две таблицы в одной таблице a, чтобы это было

результат:

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

Если Nama не является уникальным в tablea или tableb, или если строки e Xist в tablea, которые не имеют соответствующих строк в tableb, например:

TableA:

Nama Jumlah 
A  66 
B  95 
C  47 
C  18 

TableB:

Nama Jumlah Gaji 
A  35  47 
C  0  24 
D  27  30 
Z  NULL 99 

Если приемлемым результатом является возвращение единого возникновения каждое значение Nama вместе с итогами Jumlah и Gaji, то один подход (при условии, что типы данных столбцови Jumlah совместимы), и если предположить, что нет необходимости возвращать строки в определенной последовательности, один из вариантов заключается в объединении двух наборов с оператором UNION ALL в производную таблицу, а затем с использованием совокупности.

Например:

SELECT t.Nama 
    , SUM(t.Jumlah) AS Jumlah 
    , SUM(t.Gaji) AS Gaji 
    FROM (SELECT b.Nama 
       , b.Jumlah 
       , b.Gaji 
      FROM tableb b 
      UNION ALL 
     SELECT a.Nama 
       , a.Jumlah 
       , NULL 
      FROM tablea a 
     ) t 
GROUP BY t.Nama 

Из производной таблицы (т.е. таким образом, что процессы MySQL производных таблиц), это, вероятно, не быть наиболее эффективным подходом для больших наборов.

2

Попробуйте объединять эти две таблицы, как:

SELECT b.Nama, IFNULL(a.Jumlah, 0) + b.Jumlah, b.Gaji 
FROM tablea a RIGHT JOIN tableb b 
ON a.Nama = b.Nama 
+0

Немного неправильного имени поля в 'Jumlah', должно быть' ISNULL (a.Jumlah, 0) + b.Jumlah' –

+0

woops typo! Спасибо @ColourDalnet – SMA

+0

Я получил ошибку '# 1582 - Неправильный счетчик параметров в вызове функции native 'ISNULL'' –

Смежные вопросы