Выборка данных из двух таблиц, в одной данные из поля jsonb

Помогите пожалуйста объединить два запроса. Задача - вывести выборку со след условием - если специальность равна коду хотя бы в одном подслучае случая.

Исключение если - prvs is null

В первой таблице мы получаем значение поля idsl, которое во второй таблице ищем в поле id.

Вот что у меня вышло (два разных запроса, которые надо объединить)

  1. Проверяем код в jsonb поле param1 (здесь проверяется под подслучаям)

    select distinct idsl
    from bills.uch
    where med ->> 'PRVS' in ('9', '91')
    
  2. По найденному в первой таблице idsl ищем во второй в поле id и выводим не повторяющийся id из второй таблицы

    select distinct
    from bills.uch a
    join till.zsl z on a.idsl=z.id
    where a.idsl= 'результат поиска из первого запроса - med ->> 'PRVS' in ('9', '91'))
    

Ответы (1 шт):

Автор решения: Evgeniy Leonidov

Попробуй сначала выбрать idsl из таблицы bills.uch, где med ->> 'PRVS' соответствует '9' или '91'. Затем, используя эти idsl в качестве фильтра, соединить табличку bills.uch с till.zsl по полю id, чтобы получить итоговый набор уникальных id из таблицы till.zsl.

SELECT DISTINCT z.id
FROM bills.uch a
JOIN till.zsl z ON a.idsl = z.id
WHERE a.med ->> 'PRVS' IN ('9', '91')
AND a.idsl IN (
    SELECT DISTINCT idsl
    FROM bills.uch
    WHERE med ->> 'PRVS' IN ('9', '91')
)
→ Ссылка