我有以下疑问:
SELECT DISTINCT x.TaskID S_ID
, y.TaskID T_ID
, z.TaskID P_ID
, z.Duration
FROM SumSubTaskPDay x
LEFT
JOIN SumTaskPDay y
ON y.TaskID = x.T_ID
LEFT
JOIN SumParentTaskPDay z
ON z.TaskID = SumTaskPDay.y
我遇到的问题是,只要我在id之外添加另一个字段,查询就会返回太多的行。
所以在这个例子中 SumParentTaskPDay
. Duration
使行计数增加或减少四倍
问题可能出在那些实际是来自同一个表的3个别名的视图的表中 tasks
: tasks
作为 subtasks
链接到 tasks
作为 tasks
与 tasks
. id
= subtasks
. parent_id
```
CREATE VIEW SumTaskPDay AS
SELECT DATE_FORMAT(n.START, '%d %M %Y') dDay
, t.idTask TaskID
, t.TaskName
, t.ParentTaskId PT_ID
, COUNT(s.idTask) SubTaskCount
, SUM(UNIX_TIMESTAMP(n.STOP) - UNIX_TIMESTAMP(n.START)) DurationUnix
, DATE_FORMAT(SEC_TO_TIME(SUM(UNIX_TIMESTAMP(n.STOP) - UNIX_TIMESTAMP(n.START))), '%H:%i:%s') Duration
FROM Slips n
LEFT
JOIN Tasks s
ON s.idTask = n.idTask
LEFT
JOIN Tasks t
ON t.idTask = s.ParentTaskId
GROUP
BY dDay
, t.idTask
, t.TaskName
, t.ParentTaskId
我使用这种方法来汇总不同级别的持续时间字段,这样我就可以获取一个用于构建报表的简单视图,其中我只需要关心分组,而不需要公式之类的东西,这样我就可以轻松地切换到不同的报表构建工具,而无需花几个小时的时间来找出汇总和格式化时间戳的方法
暂无答案!
目前还没有任何答案,快来回答吧!