我有一个查询,该查询基于主表(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')。
谢谢您的帮助!
答案 0 :(得分:0)
您要寻找in
吗?
where 'blood test' in (select unnest(string_to_array(lower(s.services), ','))
from services_master s
)