我的查询的一部分是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中编写?
答案 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
方法,但我不确定这样做的优势,就您而言代码工作正常,阅读清晰。
希望有所帮助,