У меня есть 3 таблицы, как показано ниже
Table - travel_requests
id industry_id travel_cost stay_cost other_cost
1 2 1000 500 200
2 4 4000 100 200
3 5 3000 0 400
4 1 3000 250 100
5 1 200 100 75
Table - industry_tech_region
id industry_name
1 Auto
2 Aero
3 Machinery
4 Education
5 MTV
Table - industry_allocation
id industry_id allocation
1 1 500000
2 2 300000
3 3 500000
4 4 300000
5 5 500000
6 1 200000
Я хочу создать представление с 3 столбцами
industry_name, total_costs, total_allocation
Я создал вид как показано ниже
SELECT industry_tech_region.industry_name,
SUM(travel_requests.travel_cost + travel_requests.stay_cost + travel_requests.other_cost) AS total_cost,
SUM(industry_allocation.allocation) AS total_allocation
FROM industry_tech_region
INNER JOIN industry_allocation
ON industry_tech_region.id = industry_allocation.industry_id
INNER JOIN travel_requests
ON industry_tech_region.id = travel_requests.industry_id
GROUP BY industry_tech_region.industry_name
Но результат, который я получаю, как показано ниже, является неправильным
industry_name total_cost total_allocation
Aero 1700 300000
Auto 7450 1400000 (wrong should be 3725 and 700000)
Education 4300 300000
MTV 3400 500000
Вероятно, это происходит потому, что в таблице travel_requests есть 2 записи для industry_id 1. Но они должны учитываться только один раз.
Пожалуйста, дайте мне знать, как мы можем исправить утверждение вида.
Кроме того, я хочу добавить еще один столбец, который представляет собой остаток_аллокации, который представляет собой разницу между итоговой_отделением и общей_ценкой для каждой отрасли.