Zend Framework 1查询,按满意的标准排序结果

时间:2014-05-05 19:57:49

标签: mysql forms zend-framework filter criteria

我要从"产品"中提取所有产品。 table(DBMS:MySQL,Adapter:PDO),按匹配的过滤条件数排序结果。

这是原始SQL查询的示例(但我将使用Zend_DB类和适配器):

    SELECT *
    FROM product 
    WHERE price < 300
    AND price > 100
    AND discount = TRUE
    AND used = FALSE
    AND type = MEAL

and a lot of other optionals filter criteria that end user could introduce from the UI.

所有过滤条件(查询中的条件)都可以由用户以Web应用程序的形式选择性地匹配, GOAL我的算法是从最匹配的标准产品订购结果符合至少2个标准的产品。

我使用的是Zend Framework 1,我的问题是: 是否有任何Zend类可以帮助我在这个特定的算法? 如果不是,有人可以建议解决这个问题吗?

我已经尝试了一个粗略的解决方案,我会在考虑所有可能的标准组合的情况下编写查询,但考虑到有很多标准,算法复杂性增加了很多,所以我想可能存在替代方案。 感谢

1 个答案:

答案 0 :(得分:1)

像...一样的东西。

SELECT * FROM (
   SELECT P.*,
case when price < 300 and price >  100 then 1 else 0 end + 
case when discount = true then 1 else 0 end + 
case when used = false then 1 else 0 end + 
case when type = 'MEAL' then 1 else 0 end +
... (for each possible outcome) as Matches
    FROM product p)
Where matches > 2
Order by Matches descending