У меня ниже таблицы
1. Единица материала:
id | material_unit
1 | Nos.
2 | lts
2. Таблица материалов:
id | Material_name
1 | bricks
2 | Cement
3. Таблица Грн:
id | material_id | qty | unit
1 | 1 | 100 | 1
2 | 2 | 500 | 1
3 | 2 | 100 | 1
4 | 1 | 200 | 1
4. Таблица потребления:
id | material_id | qty | unit
1 | 1 | 50 | 1
2 | 1 | 50 | 1
3 | 2 | 100 | 1
4 | 2 | 200 | 1
Ожидаемые результаты, как показано ниже:
Material Name | Unit | Total Qty | Total Consumed Qty | Stock
Bricks | Nos. | 300 | 100 | 200
Cement | Nos. | 600 | 300 | 300
Таким образом, на вышеуказанных результатах общий кол-во должен быть получен из таблицы Grn, а общее кол-во потребленных из таблицы потребления и Stock является разностью обоих и должен быть Group By Material_id.
Ниже запрос возвращает SUM значений из GRN и таблицы потребления, но он умножает SUM на количество записей в таблице потребления.
Какую ошибку я делаю, может кто-нибудь помочь мне разобраться в моей ошибке.
SELECT sm.material_name as 'Material Name', mu.material_unit as 'Material Unit', sum(g.qty) as 'GRN Qty', sum(c.qty) as 'Consumed Qty', SUM(g.qty) - SUM(c.qty) as 'Stock' from grn g
JOIN material_table sm ON g.material_id = sm.id
JOIN material_unit_table mu ON g.unit_id = mu.id
JOIN consumption c ON c.material_id = g.material_id
group by g.material_id