0
我意識到這可能不是一種有效的選擇,但它目前工作...主要。我遇到的問題是,如果值沒有提交「iminutes」和「dminutes」...我沒有得到任何數據。我認爲如果他們都返回了「0」的值,它會解決這個問題,但不知道如何讓他們這樣做。建議?使用3個子查詢連接進行SQL SELECT語句篩選
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
不幸的是不起作用。因爲它會運行到非空值。基本上,它有一個價值,或者我需要它返回一個「0」。 – Mike
我不確定我是否理解你的評論,如果iminutes爲NULL,'COALESCE'將返回0,如果它非空則iminutes本身。提醒一下,0!= NULL。 – wiill
對不起,是的你是對的! :)我將以一種不同的方式去做這件事,只是做每件事的總和並且減去減法,因爲我不需要它。謝謝! – Mike