我有一张桌子
Id status
1 Online
2 Offline
3 Offline
我还有一个单独的表格,可以在其中找到正常运行时间和停机时间的总小时数/日期。
总时间
Id up down
1 10 14
2 20 4
3 15 9
1 5 19
2 4 20
3 10 14
我想显示终端ID,状态和总计运行时间和停机时间(1 = 15(up),2 = 24(up),3 = 25(up)。我正在使用内部联接,但我不知道如何将能够获得正常运行时间和停机时间的总和。
SELECT terminal.Id, terminal.status, total_time.Id, SUM(total_time.up),SUM(total_time.down)
FROM terminal
INNER JOIN total_time
ON terminal.Id = total_time.Id
WHERE terminal.Id = total_time.Id
最佳答案
这样的事情应该可以解决问题。我将您的问题解释为仅询问当前状态的时间总和。如果这不是您想要的(也许您想要两者的总和),请告诉我。
SELECT t.id, t.status, IF(t.status = 'Online', ttlTime.upTime, ttlTime.downTime) as totalTime
FROM terminal t
JOIN
(SELECT tt.id, SUM(tt.up) as upTime, SUM(tt.down) AS downTime
FROM total_time tt
GROUP BY tt.id) ttlTime ON t.id = ttlTime.id
请参见SQLFiddle