Zend_Db_Select EXISTS

时间:2011-11-16 09:02:28

标签: zend-framework zend-db-select

我的查询的一部分是EXISTS条件:

$select->where(
  'EXISTS(' .
  'SELECT `price_property_id` FROM `property_price` ' .
    'WHERE `price_property_id` = `pu_property_id`' .
      ' AND `price_value` >= ' . $params['price_min'] .
      ' AND `price_value` <= ' . $params['price_max'] .
   ')'
);

它如何以正确的方式在Zend Framework中编写?

2 个答案:

答案 0 :(得分:1)

我相信这就是你要找的东西!:

<?php

// $select is instance of Zend_Db_Select
// $db is instance of Zend_Db_Adapter

$select->where('exists (?)', new Zend_Db_Expr(
    $db->quoteInto('select * from your_table where id = ?', $id, Zend_Db::PARAM_INT)
));

?>

答案 1 :(得分:0)

据我所知,Zend_Db_Select没有特定的方法在where子句中包含子查询。我认为你无法进一步改进它,就像它的写作方式一样。

您可以将子查询重写为OUTER JOIN,并且您可以利用更多Zend_Db_Select方法,但我不确定这样做的优势,就您而言代码工作正常,阅读清晰。

希望有所帮助,