Как оценить запрос на основе результатов другого запроса? - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть запрос, который возвращает список всех отдельных медицинских услуг из различных учреждений на основе поля (услуг) в основной таблице (services_master).

SELECT DISTINCT unnest(string_to_array(LOWER(s.services),','))
FROM services_master as s

, который возвращает данные как:

blood test
consultation
streptest
...

Затем мне нужно получить другие данные из таблицы (и других таблиц) на основе выбора пользователем одной из этих служб (в виде раскрывающегося списка, заполненного результатами первого запроса).

Мой основной запрос для всех этих данных выглядит так:

SELECT
    s.service_id,
    s.name,
    s.address,
    s.phone_num AS phone,
    s.lat AS x,
    s.lon AS y,
    s.website AS URL,
    s.services,
    h.hours,
    pc.cat_name as primary_category,
    sc.subcat_name as subcategory
FROM health.services_master s
LEFT JOIN health.business_hours h ON s.service_id = h.id
LEFT JOIN health.primary_category pc ON s.primary_cat_id = pc.cat_id
LEFT JOIN health.subcategory sc ON pc.cat_id = sc.pc_id
WHERE s.primary_cat_id = 2 AND s.sub_cat_id = 10 AND s.insur_id = 4;

Где последние значения условия where также будут основаны на вводе пользователем.

Я пробовал что-то вроде блоков WITH, хотя я должен признать, что работа, которую я проделал до сих пор, расширяет мои знания о запросах postgres / sql.

В идеале я мог бы оценить эти два запроса одновременно (т. Е. Запустить список параметров службы (запрос № 1) и использовать это значение во втором запросе в качестве предложения where, например: WHERE service_option = 'blood test').

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 11 апреля 2019

Вы ищете in?

where 'blood test' in (select unnest(string_to_array(lower(s.services), ','))
                      from services_master s
                     )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...