안녕하세요, 저는 합계 쿼리에 대해 질문하고 싶습니다. 쿼리를 수행 할 때 혼란을 겪었습니다.ASK MySQL Query SUM 다른 테이블
총 전류를 계산하고 싶습니다. INCOMING 재료에 대한
SUM
select (select sum(jumlah) from warehouse where tgl_invoice >= '2013-03-17' AND
tgl_invoice <='2013-03;18' and kode=a.kode) total,a.kode,a.nama from warehouse a
group by a.kode;
결과 :
+-------+---------+------------+ | total | kode | nama | +-------+---------+------------+ | 4 | ACLG001 | AC LG 1 pk | | 180 | P001 | Spindle | | 40 | S012 | Cable | +-------+---------+------------+
SUM 물질의 사용하기 위해 (제품)
select (select sum(jumlah) from use_material where tanggal >= '2013-03-17' AND
tanggal <='2013-03;18' and kode_barang=a.kode) total,a.kode,a.nama from warehouse a
group by a.kode;
결과 :
+-------+---------+------------+ | total | kode | nama | +-------+---------+------------+ | NULL | ACLG001 | AC LG 1 pk | | 20 | P001 | Spindle | | 10 | S012 | Cable | +-------+---------+------------+
그리고 지금은 받는 자료 (제품) 마이너스 재료의 사용 (제품을) 합계를
select
(select sum(jumlah) from warehouse
where tgl_invoice >= '2013-03-17' AND tgl_invoice <='2013-03;18' and kode=a.kode) -
(select sum(jumlah) from use_material
where tanggal >= '2013-03-17' AND tanggal <='2013-03;18' and kode_barang=a.kode)
total,a.kode,a.nama from warehouse a group by a.kode;
결과 :
+-------+---------+------------+ | total | kode | nama | +-------+---------+------------+ | NULL | ACLG001 | AC LG 1 pk | | 160 | P001 | Spindle | | 30 | S012 | Cable | +-------+---------+------------+
여기 계산 중 오류가 있습니다. AC LG 1 PK는 4가되어야하지만 결과는 NULL이어야합니다.
Please Answer.
TRY – yusronnube
: use_material에서 선택 COALESCE (SUM (jumlah 해당) 여기서 tanggal> = '2013년 3월 17일'AND tanggal <= '2013-03; 18'과 kode_barang = a.kode), 0) 합계, a.kode, a.nama 창고에서 by a.kode; –
본질적으로 COALESCE는 매개 변수를 취하고 제공된 첫 번째 null이 아닌 값을 반환합니다. 그것은 이런 종류의 일에 _precisely_ 사용됩니다. 당신은 무언가로부터 null을 뺄 수 없습니다. 당신은 null을 얻습니다. 그래서 당신이 사용할 수있는 무언가를 얻으려면 COALESCE를 0으로 만듭니다. 그것이 도움이되기를 바랍니다. –