2012-08-29 11 views

Respuesta

3

Con Zend_Db_Select que no puede hacerlo de manera hermosa, por lo que sugiero que uses consulta sencilla:

$q = "WITH t ..." 
$db->fetchAll($q); 
0

I CITA

Uso Zend_Db_Select no es obligatorio. Para consultas SELECT muy simples, , generalmente es más simple especificar toda la consulta SQL como una cadena y ejecutarla usando métodos de Adapter como query() o fetchAll(). Usando Zend_Db_Select es útil si necesita ensamblar una consulta SELECT procesalmente, o basada en lógica condicional en su aplicación.

para que pueda probar esta

$wthselect = 'WITH t AS 
      (SELECT item_id, row_number() OVER (ORDER BY some_criteria DESC) rn 
       FROM orders) 
     SELECT t2.rn, t2.item_id 
      FROM t t1 JOIN t t2 ON (t2.rn > t1.rn) 
      WHERE t1.item_id = 145'; 

$stmt = $select->query($wthselect); 
$result = $stmt->fetchAll(); 
0

El Zend_Db_Select es muy útil si la consulta es un tanto complicado, con parámetros y la lógica incluida en su aplicación, como ya se ha citado en otra respuesta. Consulte este enlace en el official Zend Framework para obtener una descripción detallada de esta instrucción.

También verifique this useful link de la comunidad de Zend Framework, especialmente this post. Muestra claramente que para las consultas pequeñas y no complicadas, como la que publicó, es más simple utilizar las instrucciones fetchAll() o query().

Así que, mi consejo, utilice el fetchAll() o query() para su caso.

Cuestiones relacionadas