Ребята, вы можете мне помочь, чтобы создать правильный выбор mysql с объединением этих ниже выбранных?
Мои выделения отдельно выглядят так:
SELECT budget as budget from projects where id =96
SELECT sum(value) as expenses from expenses where project_id =96
SELECT sum(estimated_hours * t2.man_hour) as estimated from project_has_tasks t1 left join
users t2 on t1.user_id = t2.id where project_id =96
SELECT sum(TIME_FORMAT(SEC_TO_TIME (time_spent),'%k.%i' )
* t2.man_hour) as time_spent_cost FROM project_has_tasks t1
left join users t2 on t1.user_id = t2.id where t1.project_id ='96'
Они работают нормально, но я хочу добиться одного результата:
| budget | expenses | estimated | time_spent_cost |
____________________________________________________
| 298833 | 24234 | 4434333 | 343434 |
Во всяком случае, я только что создал общий выбор, но он не работает должным образом (неправильные суммы...)
SELECT t1.project_id, t3.budget,
IFNULL(sum(t4.value),0) as additional_costs,
IFNULL(sum(estimated_hours)* t2.man_hour ,0)
as estimated_hours_costs,
IFNULL(TIME_FORMAT(SEC_TO_TIME
(sum(t1.time_spent)),'%k.%i' )* t2.man_hour,0)
as time_spent_cost, NOW()
FROM project_has_tasks t1 left join
users t2 on t1.user_id = t2.id left join
projects t3 on t1.project_id = t3.id
left join expenses t4
on t1.project_id = t4.project_id
WHERE t1.project_id ='96' group by t1.project_id
Любая помощь оценивается.
Конечно, суммы слишком велики, я полагаю, что и расходы, и пользователи возвращают более одной строки, а суммы вычисляются по всем строкам, поэтому, если есть три пользователя, то оценка будет в три раза больше, чем вы хотите. Предполагая, что проекты возвратят только одну строку, это может работать лучше:
SELECT t1.project_id, t3.budget,
(SELECT sum(IFNULL(t4.value,0))
FROM expenses t4
WHERE t1.project_id = t4.project_id) as additional_costs,
sum(IFNULL(t1.estimated_hours* t2.man_hour,0)) as estimated_hours_costs,
sum(IFNULL(TIME_FORMAT(SEC_TO_TIME (t1.time_spent),'%k.%i' )* t2.man_hour,0)) as time_spent_cost,
NOW()
FROM project_has_tasks t1
left join users t2 on t1.user_id = t2.id
left join projects t3 on t1.project_id = t3.id
WHERE t1.project_id ='96'
group by t1.project_id