Получить записи на основе многих условий в одном столбце - PullRequest
2 голосов
/ 21 октября 2019

У меня есть таблица «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" имеет много переменных, поэтому я хочу получить задачу или задачи на основе условий переменных, таких как

Я хочу получить задачу с initiator = "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')

Примечание: я использую Activity Framework в Java и хочу создать собственный запрос Query.

1 Ответ

1 голос
/ 21 октября 2019

Я думаю, вы хотите агрегирование и 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.

...