如何根据另一个查询的结果评估一个查询?

时间:2019-04-11 15:54:18

标签: sql database postgresql

我有一个查询,该查询基于主表(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 :(得分:0)

您要寻找in吗?

where 'blood test' in (select unnest(string_to_array(lower(s.services), ','))
                      from services_master s
                     )