多元键和元值搜索

时间:2016-06-11 07:38:28

标签: php mysql wordpress

我正在研究客户端项目并且难以进行多元meta_key,元值搜索。

我的数据库结构就像那样

clinics                   clinics_meta
=======                   =============
id   name                id fk_clinic_id   meta_key   meta_value
1    dental               1   1             city       london
2    heart                2   1             country    england
                          3   2             city       manchester
                          4   2             country    london

我想通过city = londoncountry = england

来诊所

我试过这个

SELECT distinct(clinics.id) FROM clinics, clinic_meta
WHERE clinics.id = clinic_meta.fkClinicId
AND  (clinic_meta.metaKey = 'clinicCountry' AND clinic_meta.metaValue like '%england%')
AND  (clinic_meta.metaKey = 'clinicCity' AND clinic_meta.metaValue like '%london%')

请不要考虑语法错误而是逻辑。

此代码不会返回clinic name/id

但不是使用两个过滤器城市,国家/地区

如果我只使用一个过滤器,它会返回诊所名称。

任何帮助将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:0)

    select cl.* from clinics cl
     inner join 
     clinics_meta cm1 
     on cl.id=cm.clinic_id
     inner join 
     clinics_meta cm2
     on cm1.clinic_id=cm2.clinic_id
     where cm1.meta_key='Country' and cm1.meta_value='England' 
     and cm1.meta_key='City' and cm2.meta_value='London'
    group by t1.id;