繁体   English   中英

SQL查询根据条件选择记录?

[英]SQL query to select records based on criteria?

我有点SQL n00b的时刻。 假设我有一个带有两个表的属性网站: propertiesfeatures ,一个表将它们连接在一起。 如果我有搜索表单,如何构造查询以仅选择具有所有选定条件的属性?

例如,条件将从复选框中以数组的形式发布:

Array
(
    [features] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 5
        )
)

如何从具有ID为1、2和5(可能还有其他)的特征的properties中选择记录,但仅具有一个或两个ID的属性不匹配?

您可以过滤联接表以查找感兴趣的功能,然后按属性分组并将结果集限制为仅包含所需记录数的组:

SELECT   properties.*
FROM     properties JOIN propfeatures USING (property_id)
WHERE    propfeatures.feature_id IN (1,2,5)
GROUP BY property_id
HAVING   COUNT(DISTINCT propfeatures.feature_id) = 3

当然,如果可以保证唯一性,则可以节省DISTINCT操作,而只需使用COUNT(*)

如果propertiesfeatures表由列加入feature_idpropertiesidfeatures表中,那么我们就可以这样做:

SELECT a.* FROM `properties` AS a JOIN `features` AS b WHERE 
a.`feature_id`=b.`id` AND b.`id` IN (1,2,5) ORDER BY a.`feature_id` ASC;

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM