• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

MySQL查询与一对多的关系与匹配

php 来源:user3244871 3次浏览

首先表MySQL查询与一对多的关系与匹配

物业搜索

id Name 

1 ABC 
2 XYZ 
3 GHQ 

Property_options

id property_id option 

1  1   terrace 
2  1   balcony 
3  1   garaj 
1  2   terrace 
2  2   balcony 
3  2   garaj 

我想有三个过滤财产选项(terrace,balconygaraj

如果用户检查三个选项,那么只有那些属性会有三个选项不是两个或一个。

===========解决方案如下:

我会做到这一点使用的聚集和group by

select p.propertyid 
from property p 
group by p.propertyid 
having sum(property_option = 'terrace') > 0 and 
     sum(property_option = 'balcony') > 0 and 
     sum(property_option = 'garaj') > 0; 

条件的每个计算的时候出现的属性的数量。这是一个灵活的方法。如果你想前两个,但不是 “garaj”,你可以使用:

having sum(property_option = 'terrace') > 0 and 
     sum(property_option = 'balcony') > 0 and 
     sum(property_option = 'garaj') = 0; 

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)