I realize this might not be an efficient select, but it works for now…mostly. The problem I’m having is that if values aren’t submitted for both “iminutes” and “dminutes”… I get no data. I think if they both returned a value of “0” it would resolve this problem, but not sure how to get them to do that. Suggestions?
SELECT user,total.tuser_id, total.tminutes,
total.tminutes-indirect.iminutes AS itminutes, total.tminutes-direct.dminutes AS dtminutes
FROM
(SELECT U.user_name AS user,U.user_id AS tuser_id, SUM(M.minutes) AS tminutes
From summary S
JOIN users U ON U.user_id = S.user_id
JOIN tasks TA ON TA.task_id = S.task_id
JOIN tcompleted TC ON TC.tcompleted_id = S.tcompleted_id
JOIN minutes M ON M.minutes_id = S.minutes_id
JOIN hour_interval H ON H.hourinterval_id = S.hourinterval_id
WHERE DATE(submit_date) = curdate()
AND TIME(submit_date) BETWEEN '00:00:01' and '23:59:59'
GROUP BY U.user_id) total
JOIN
(SELECT U.user_id AS iuser_id, SUM(M.minutes) AS iminutes
FROM summary S
JOIN users U
ON U.user_id = S.user_id
JOIN minutes M
ON M.minutes_id = S.minutes_id
JOIN tasks TA
ON TA.task_id = S.task_id
WHERE TA.task_type='indirect'
AND DATE(submit_date) = curdate()
AND TIME(submit_date) BETWEEN '00:00:01' and '23:59:59'
GROUP BY U.user_id) AS indirect
ON total.tuser_id = indirect.iuser_id
JOIN
(SELECT U.user_id AS duser_id, SUM(M.minutes) AS dminutes
FROM summary S
JOIN users U
ON U.user_id = S.user_id
JOIN minutes M
ON M.minutes_id = S.minutes_id
JOIN tasks TA
ON TA.task_id = S.task_id
WHERE TA.task_type='direct'
AND DATE(submit_date) = curdate()
AND TIME(submit_date) BETWEEN '00:00:01' and '23:59:59'
GROUP BY U.user_id) AS direct
ON total.tuser_id = direct.duser_id
ORDER BY total.tuser_id
COALESCEwill return the first non-null value provided.COALESCEhere will return 0 when iminutes is NULL. You can do the same for dminutes.You may check the MySQL Reference Manual http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_coalesce