我想在一个行集上执行一个MySQL查询,zend select从另一个查询返回我。
原因是我需要先前的“更一般”查询,然后根据我的需要获得更精确的行。
有没有办法避免向数据库发出另一个请求?
长话以来,我正在使用自动完成插件,它会返回与用户输入模式匹配的不同城市的信息。这是一个非常挑剔的查询,我希望每当用户将某些参数更改为与所讨论的城市无关的查询时,我都会避免这样做。
因此,自动完成功能会返回一个包含多个城市的行集,并且我希望“消除”其中一些不符合用户选项的行,例如价格范围,距离等。
我希望尽可能保留该行集并对其执行一些过滤,而不是每次都直接向数据库请求新的行集。
有没有办法在该行集上执行MySQL查询,还是必须将其转换为数组并对它们进行“手动”过滤?
答案 0 :(得分:0)
我认为您正在寻找'嵌套选择'。在Zend_DB中你可以像在这篇文章中那样做:
如果您的项目中有Doctrine 1.x,则可以执行此DQL查询:
$q = new Doctrine_RawSql();
$q->addComponent('m', 'Application_Model_Table')
->from('(SELECT * FROM table2 m2 WHERE ... // here is first query
) AS m') // IMPORTANT- name as m !
->orderBy('m.created ASC')
->limit($limit)
->where(' // connect tables or give 2\'nd where');
return $q->execute();
我希望这就是你要找的东西