一列基于多种条件获取记录

时间:2019-10-21 11:46:37

标签: java sql workflow activiti

我有一个“ ACT_RU_TASK”表和一个“ ACT_RU_VARABILES”表。每个任务都有很多变量,我想根据一些变量来获得一组任务,例如:

ACT_RU_TASK

| ID     |  PROC_INST_ID_  |
-----------------------------
|   20      | 35      |

ACT_RU_VARABILES

| ID     |  PROC_INST_ID_  |   NAME_  | TEXT_
----------------------------------------------
|   44      | 35      |      initiator | user1
|   45      | 35      |      team      |   team1
|   46      | 35      |      status    |  0
|   47      | 35      |    profile     |  null

现在PROC_INST_ID_为“ 35”的任务具有许多变量 所以我想根据

我想使用启动程序=“ user1”和team =“ team1”来获得任务

我编写了此查询,但没有得到任何结果

SELECT *
FROM ACT_RU_TASK JOIN
     ACT_RU_VARIABLE
     ON ACT_RU_TASK.PROC_INST_ID_ = ACT_RU_VARIABLE.PROC_INST_ID_
 WHERE (ACT_RU_VARIABLE.NAME_='initiator' AND ACT_RU_VARIABLE.TEXT_='user1') AND   (ACT_RU_VARIABLE.NAME_='team' AND ACT_RU_VARIABLE.TEXT_='team1')

注意:我正在Java中使用Activity Framework,并且想要创建本机任务Query。

1 个答案:

答案 0 :(得分:2)

我认为您需要聚合和having进行过滤:

SELECT v.PROC_INST_ID_
FROMACT_RU_VARIABLE v
WHERE (v.NAME_ = 'initiator' AND v.TEXT_ = 'user1') OR   
      (v.NAME_ = 'team' AND v.TEXT_ = 'team1')
GROUP BY v.PROC_INST_ID_
HAVING COUNT(*) = 2;   -- both attributes match

这将检查两个属性是否匹配。您可以加入其他表中的其他信息。但是,获得PROC_INST_ID_并不需要ACT_RU_TASK