使用多个字段时,多个表的组合字段返回的行太多

edqdpe6u  于 2021-06-20  发布在  Mysql
关注(0)|答案(0)|浏览(239)

我有以下疑问:

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 作为 taskstasks . 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

我使用这种方法来汇总不同级别的持续时间字段,这样我就可以获取一个用于构建报表的简单视图,其中我只需要关心分组,而不需要公式之类的东西,这样我就可以轻松地切换到不同的报表构建工具,而无需花几个小时的时间来找出汇总和格式化时间戳的方法

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题