Я хочу сделать отчет, но у меня возникают проблемы с моим запросом. Вот мой запрос:
SELECT a.Tanggal,a.IdMesin,a.PartID,b.PartName,
SUM(a.QtyPlanning) AS Plan,SUM(IF (a.HasilProduksi <> 'Good', a.QtyProduksi, 0)) AS NG,
SUM(IF (a.HasilProduksi = 'Good', a.QtyProduksi, 0)) AS OK
FROM
trans_lhpdthp a
INNER JOIN ms_partcategory b on b.PartID=a.PartID
WHERE a.Tanggal BETWEEN '2018-01-09' AND '2018-01-12'
GROUP BY a.PartID,a.IdMesin
ORDER BY b.PartName
И это дает мне результат следующим образом:
|Tanggal |IdMesin |PartID|PartName|Plan |NG |OK |
|------- |------ |------|--------|-----|---|----|
|2018-01-09|BS 120 A|BLXX |BOTTOM |5000 |500|4500|
|2018-01-09|BS 120 B|ACLA |CLAMP |5000 |600|4400|
|2018-01-12|BS 260 E|SMXX |RIGHT |1200 |0 |1200|
И я хочу получить такой результат:
|Tanggal |IdMesin |PartID|PartName|Plan |NG |OK |
|------- |------ |------|--------|-----|---|----|
|2018-01-09|BS 120 A|BLXX |BOTTOM |5000 |500|4500|
|2018-01-09|BS 120 B|ACLA |CLAMP |5000 |600|4400|
|2018-01-10| | | |0 |0 |0 |
|2018-01-11| | | |0 |0 |0 |
|2018-01-12|BS 260 E|SMXX |RIGHT |1200 |0 |1200|
Можете ли вы мне помочь, любая помощь может быть оценена.
Вы заметили бы, что проблема INNER JOIN vs LEFT JOIN вызывает вашу проблему. Когда данных нет, b INNER JOIN не будет отображать записи из a. Но LEFT JOIN будет записывать записи даже если у вас нет связанных записей в b.
Следующее должно работать.
SELECT
a.Tanggal,
a.IdMesin,
a.PartID,
b.PartName,
SUM(a.QtyPlanning) AS Plan,
SUM(IF (a.HasilProduksi <> 'Good', a.QtyProduksi, 0)) AS NG,
SUM(IF (a.HasilProduksi = 'Good', a.QtyProduksi, 0)) AS OK
FROM
trans_lhpdthp a
LEFT JOIN ms_partcategory b
ON b.PartID = a.PartID
WHERE a.Tanggal BETWEEN '2018-01-09' AND '2018-01-12'
GROUP BY a.PartID,a.IdMesin
ORDER BY b.PartName
Вы можете достичь двух целей: