实际上,我正在尝试使用dotproject来构建我自己的小应用程序。
我遇到了这样一种情况,dotproject显示与特定项目相关的所有任务,.It在数据库中查询该任务,并触发下面的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 properly.Actually,这个sql检索与我的项目中的project.But相关联的所有任务,我只想要那些持续时间已经完成的任务。
我如何更改sql来实现这一点?
发布于 2009-10-13 14:07:59
您可以简化大部分操作,只需查看tasks表上的task_percent_complete字段即可。如果是100%,那么任务就完成了。
如果你想在dotproject上构建一个应用程序,我建议你去看看web2project。大约两年前,我们从dotproject分叉,并对系统进行了显著的清理和改进。如果你有任何问题,请随时给我留言。
发布于 2013-02-06 14:04:18
我知道现在回答这个问题为时已晚,但希望有人能从中得到一些线索:
只需添加类似于$q->addWhere('task_percent_complete = 100');的where查询
总之,您的代码将如下所示:
$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');https://stackoverflow.com/questions/1477483
复制相似问题