我有一个“ 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。
答案 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
。