我不知道我是否正确地措辞了这个问题,但它就是这样。
这是一个使用 java、oracle、hibernate 的 Web 应用程序。
我在一个(项目)到多个(任务)关系中有 2 个表。
项目
- item_id 名称
- 活动状态
- ETC
任务
- task_id
- item_id
- 活动状态
- 进度状态
- ETC
项目的状态由其所有任务的状态组成。这是逻辑...
- 如果项目状态被取消或暂停...返回项目活动状态
- 如果没有任务,返回 Completed
- 如果所有任务都处于活动状态且未被取代,则
- ...如果所有任务都未开始,则返回未开始
- ...如果所有任务都已完成,则返回已完成
- ...如果所有任务都处于暂停状态,则返回暂停
- 否则返回 Started
我想使用 SQL 执行此操作并将其映射到我的休眠映射文件中的一个字段。
在过去的几天里,我尝试了很多东西,但似乎无法使其正常工作。我尝试对记录进行分组,如果找到 1 条记录,则返回该状态。我用过解码、大小写等。
以下是我尝试过的一些示例。在第二个示例中,我收到“不是单个组组功能”错误。
有什么想法吗?
select decode(i.active_status_id, 'OH', i.active_status_id, 'Ca', i.active_status_id,t.progress_status_id)
from tasks t
LEFT OUTER JOIN Items i
ON i.item_id = t.item_id
where t.item_id = 10927815 and t.active_status_id = 'Ac' and t.active_status_id != 'Su'
group by i.active_status_id, t.progress_status_id;
select case
when (count(*) = 1) then progress_status_id
else 'St'
end
from
(select progress_status_id
from tasks t
where t.item_id = 10927815 and (t.active_status_id = 'Ac' and t.active_status_id != 'Su') group by t.progress_status_id)