扩展dotproject

时间:2009-09-25 14:05:51

标签: sql dotproject

实际上我正在尝试使用dotproject来构建我自己的小应用程序。
我被困在dotproject显示与特定项目相关的所有任务的位置。它在数据库中查询此触发下面的sql

 $q->addJoin('tasks', 't1', 'projects.project_id = t1.task_project');
    $q->addQuery('com.company_name AS company_name, com_internal.company_name'
                 . ' AS company_name_internal' 
                 . ", CONCAT_WS(', ',contact_last_name,contact_first_name) user_name" 
                 . ', projects.*, SUM(t1.task_duration * t1.task_percent_complete' 
                 ." * IF(t1.task_duration_type = 24, {$working_hours}, t1.task_duration_type))" 
                 ." / SUM(t1.task_duration * IF(t1.task_duration_type = 24, {$working_hours}," 
                 . ' t1.task_duration_type)) AS project_percent_complete');

    $q->addWhere('t1.task_id = t1.task_parent');
$q->addWhere('project_id = ' . $project_id);
$q->addGroup('project_id');

我无法正确理解sql。实际上,这个sql检索与项目相关的所有任务。但在我的项目中,我只想要那些持续时间已经完成的任务。

如何更改sql以实现这一目标?

2 个答案:

答案 0 :(得分:0)

您可以简化大部分内容,只需查看任务表上的task_percent_complete字段即可。如果那是100%,那么任务就完成了。

如果您想在dotproject上构建应用程序,我建议您查看web2project。我们大约两年前从dotproject分支出来,并且已经清理并改进了系统。如果您有任何问题,请随时给我留言。

答案 1 :(得分:0)

我知道回答太晚了,但希望有人能从中得到一个线索:

只需添加$q->addWhere('task_percent_complete = 100');

之类的查询

你的代码总是如下:

 $q->addJoin('tasks', 't1', 'projects.project_id = t1.task_project');
$q->addQuery('com.company_name AS company_name, com_internal.company_name'
             . ' AS company_name_internal' 
             . ", CONCAT_WS(', ',contact_last_name,contact_first_name) user_name" 
             . ', projects.*, SUM(t1.task_duration * t1.task_percent_complete' 
             ." * IF(t1.task_duration_type = 24, {$working_hours}, t1.task_duration_type))" 
             ." / SUM(t1.task_duration * IF(t1.task_duration_type = 24, {$working_hours}," 
             . ' t1.task_duration_type)) AS project_percent_complete');

$q->addWhere('t1.task_id = t1.task_parent');
$q->addWhere('project_id = ' . $project_id);
$q->addWhere('t1.task_percent_complete = 100'); // added new line
$q->addGroup('project_id');