2009-09-25 134 views
0

其實我想用dotproject來建立我自己的小應用程序。
我在一個點,顯示了dotProject所有任務相關的特定項目。它翹起來查詢該發射低於
延伸dotproject

$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我無法properly.Actually理解SQL數據庫,這個sql檢索與項目相關的所有任務。但在我的項目中,我只想要那些持續時間已完成的任務。

我如何更改SQL來實現這一目標?

回答

0

您可以簡化大部分工作,並查看任務表上的task_percent_complete字段。如果這是100%,那麼任務完成。

如果你想在dotproject之上構建一個應用程序,我建議你改用web2project。大約兩年前我們從dotproject中分離出來,並且已經清理並改進了系統。如果您有任何問題,請隨時給我留言。

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');