1

私のクエリの一部は 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 で正しい方法でどのように記述しますか?

4

3 に答える 3

2

サブクエリとサブセレクトを新しい Zend_Db_Select オブジェクトとして作成します。これにより、そのクエリを他の場所で再利用できる可能性があるため、コードが少しきれいにecho (string)$subQueryなります。また、SQL のその部分だけを確認できるため、デバッグにも役立ちます。

$subQuery = new Zend_Db_Select();
$subQuery->from(array('price' => 'property_price'))
     ->where('price_property_id = pu_property_id')
     ->where('price_value >= ?', $params['price_min'])
     ->where('price_value <= ?', $params['price_max']);

$select->where('EXISTS('.$subQuery.')');
于 2015-09-10T17:08:59.353 に答える
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)
));

?>
于 2012-08-03T05:15:41.820 に答える
0

私の知る限り、句Zend_Db_Selectにサブクエリを含めるための特定の方法はありません。where書かれているように、これ以上改善することはできないと思います。

サブクエリを として書き直すと、OUTER JOINさらにいくつかのメソッドを利用できるようになりますがZend_Db_Select、コードが機能していて読みやすい限り、それを行う利点についてはわかりません。

それが役立つことを願って、

于 2011-11-16T09:27:19.330 に答える