2015-01-31 2 views
0

내가이 TABLEA와 표 B1 열에서 두 개의 열을 결합하여 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 

한 테이블에 두 테이블을 결합 할 수 있습니다 쿼리를 만드는 방법 이 같은이 될

결과 :

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 

감사

답변

0

Nama 경우가에서 고유하지 않습니다 tablea 또는 tableb이거나 행 e 예 tableb에 일치하는 행이없는 tablea에 XIST :

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의 각 값과 JumlahGaji의 합계를 사용하면 한 가지 방법 (NamaJumlah 열의 데이터 유형이 호환 가능하다고 가정)), 특정 시퀀스의 행을 반환해야한다는 요구 사항이 없다고 가정 할 경우, 한 가지 옵션은 UNION ALL 연산자를 사용하여 두 세트를 파생 테이블에 결합한 다음 SUM() 집계를 사용하는 것입니다. 예를 들어

:

때문에 파생 테이블 (MySQL의 프로세스는 테이블을 유도한다는 즉 방식)의
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 

이 가능성 큰 세트의 가장 효율적인 접근하지 것이다.

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

이 잘못되었습니다! 감사합니다 @ ColourDalnet – SMA

+0

'# 1582 - 네이티브 함수 호출에서 잘못된 매개 변수 개수'ISNULL '' –

관련 문제