У меня следующий запрос:
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
Проблема, с которой я столкнулся, заключается в том, что запрос возвращает слишком много строк, как только я добавляю другое поле, кроме идентификаторов.
Итакв этом примере поле SumParentTaskPDay
. Duration
приводит к тому, что число строк увеличивается примерно в четыре раза
Возможно, проблема в таблицах, которые на самом деле являются представлениями из трех псевдонимов из одной таблицы 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
Я использую этот подход для суммированияполя продолжительности для разных уровней, так что я могу получить простое представление для построения отчета, где мне нужно только позаботиться о группировке, без формул и прочее, чтобы я мог легко переключаться на разные инструменты построения отчетов, не разбираясь в часахсуммировать и форматировать метки времени