根据一列中的多个条件获取记录

Get Records based on many Conditions in One Column

我有一个 "ACT_RU_TASK"-table 和一个 "ACT_RU_VARABILES"-table。每个任务都有很多变量,我想根据一些变量获得一组任务,例如:

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" 和团队 = "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 框架,我想创建本机任务查询。

我想你想要聚合和 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.