Найти запись из нескольких записей для сообщества, которая соответствует условиям в нескольких столбцах PostgresSQL - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть таблица Сообщество . идентификатор в качестве первичного ключа

У меня есть другая таблица Community_check , которая содержит несколько записей определенного community_id . это выглядит так:

id lookup_check_type_id community_id active
1       111-222              1        true
2       123-123              1        true
3       111-222              1        false
4       123-123              2        false

checkTypeIdsIn = Array ['111-222', '123-123'];

    SELECT
        count(DISTINCT cchk.lookup_check_type_id) AS "allCheckTypesInCount"
   FROM
        community_check cchk
   WHERE
        cchk.community_id = C.id
        AND cchk.tenant_id = c.tenant_id
        AND cchk.lookup_check_type_id IN 
       (
        SELECT
            DISTINCT lchkt.id
        FROM
            lookup_check_type lchkt
        WHERE
            lchkt.id = cchk.lookup_check_type_id
            AND lchkt.tenant_id = cchk.tenant_id
            AND lchkt.id IN (${checkTypeIdsIn:csv})
        )
        GROUP BY cchk.community_id
        HAVING
            count(DISTINCT cchk.lookup_check_type_id) = array_length(${checkTypeIdsIn}, 1)

В приведенном выше запросе я получаю community_ids, у которых есть оба Lookup_check_type_ids , Теперь, в дополнение к вышеуказанному запросу,

Мне нужно найти

select * from community_check where lookup_check_type_id = '111-222' AND active = true.

И

select * from community_check where lookup_check_type_id = '123-123' AND active = true.

Оба вышеуказанных условия должны быть выполнены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...