很抱歉这个标题,但我不知道该怎么称呼它。我使用的是ansi 8.3,使用非ansi查询建议就可以了。
假设这个模式:
TimeEntries
id - int
entry_date - date
tracked_seconds - int
project_id - int
projects
id - int
name - string
path - string项目是杂乱无章的,我并不关心parent_id等,而是选择了path列,例如:
Renovate Home - path = renovate-home
- Clean Kitchen - path = renovate-home/clean-kitchen我希望查询返回以下内容:
date - project_path - tracked_seconds(this project) - tracked_seconds (total of self and child projects)按日期分组,每个项目路径多次分组,因此示例数据:
projects
name path
Funny funny
- Project funny/project
-- Is Funny funny/project/is-funny
Foo foo
- Bar foo/bar如果现在有有趣/项目和foo/ TimeEntries的TimeEntries,我发出以下查询:
SELECT entry_date, p.path as project_path, sum(tracked_seconds) / 60
FROM time_entries te
LEFT JOIN projects p on te.project_id = p.id
GROUP BY entry_date, p.path我得到的结果是:
entry_date project_path ?sum?
2010-10-01 funny/project 20
2010-10-01 foo/bar 10我想要的是:
entry_date project_path direct_sum total
2010-10-01 funny 0 20
2010-10-01 funny/project 20 20
2010-10-01 foo 0 10
2010-10-01 foo/bar 10 10发布于 2010-10-09 14:49:32
这个问题应该会让你更接近你的目标:
SELECT entry_date, p.path as project_path, p2.path, sum(tracked_seconds) / 60
FROM time_entries te
LEFT JOIN projects p on te.project_id = p.id
LEFT JOIN projects p2 on p2.path LIKE p.path + '/%'
GROUP BY entry_date, p.path, p2.pathhttps://stackoverflow.com/questions/3895881
复制相似问题