我正在研究客户端项目并且难以进行多元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 = london
和country = 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
,
但不是使用两个过滤器城市,国家/地区
如果我只使用一个过滤器,它会返回诊所名称。
任何帮助将不胜感激。
感谢。
答案 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;