У меня есть запрос, который возвращает список всех отдельных медицинских услуг из различных учреждений на основе поля (услуг) в основной таблице (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').
Спасибо за вашу помощь!