Consulta sql con query

629 views
Skip to first unread message

Henrry Chy

unread,
Feb 4, 2010, 5:18:17 PM2/4/10
to CakePHP en Español
Buenas tardes, deseo recuperar de la base de datos todas las ventas
que fueron creados en un año determinado, por ejemplo los que fueron
creados en el 2009, sin importar el dia ni mes solo el año, he probado
de distintas formas y no logro exactamente hacer lo que deseo, lo
ultimo que probe fue haciendo una consulta sql:

$ventas = $this->Venta->query("SELECT * FROM ventas WHERE
Ventas.estado = 2 and Ventas.medio_pago = 'banco' and
Ventas.fecha_venta BETWEEN '2009-01-01' AND '2009-12-31';");

de esta forma si recupera tal y como quiero, el problema es que cuando
mando la variable $ventas a un foreach, para que muestre los datos, no
resulta, xq? a caso la estructura del array que resulta de esta
consulta no es el adecuado para que el foreach?? con un debug compare
el array resultante con otro que me resulta de find, y son al parecer
iguales, entonces????

genellern

unread,
Feb 4, 2010, 5:38:28 PM2/4/10
to CakePHP en Español

> $ventas = $this->Venta->query("SELECT * FROM ventas WHERE
> Ventas.estado = 2 and Ventas.medio_pago = 'banco' and
> Ventas.fecha_venta BETWEEN '2009-01-01' AND '2009-12-31';");
>

para empezar el query en mysql es usando SELECT EXTRACT(YEAR FROM
'2010-10-10');

otra cosa que te recomiendo es que utilizes la forma cake de hacer
querys:
$conditions = array('Venta.estado'=>2, 'Venta.medio_pago' =>
'banco','EXTRACT(YEAR FROM Ventas.fecha_venta)'=>'2010' );
$ventas = $this->Venta->find('all', array('conditions'=>$conditions;

davidhc

unread,
Feb 5, 2010, 1:40:07 PM2/5/10
to CakePHP en Español
$conditions = array("LIKE" => array("Modelo.fecha" => "2009%"));

Ricardo Mun~oz A.

unread,
Feb 5, 2010, 3:27:43 PM2/5/10
to cakep...@googlegroups.com
2010/2/4 genellern <gene...@gmail.com>:

>
>
>> $ventas = $this->Venta->query("SELECT * FROM ventas WHERE
>> Ventas.estado = 2 and Ventas.medio_pago = 'banco' and
>> Ventas.fecha_venta BETWEEN '2009-01-01' AND '2009-12-31';");
>>
> para empezar el query en mysql es usando SELECT EXTRACT(YEAR FROM '2010-10-10');

podria ser tambien con SELECT .... FROM .. WHERE YEAR(campo_fecha) = 2010;

siempre y cuando el campo_fecha sea de tipo date... quizas por eso no
le funciona el BETWEEN.

> otra cosa que te recomiendo es que utilizes la forma cake de hacer querys:

[...]

exacto.

--
Ricardo Mun~oz A.

Ricardo Mun~oz A.

unread,
Feb 5, 2010, 3:29:04 PM2/5/10
to cakep...@googlegroups.com
2010/2/5 davidhc <dav...@gmail.com>:

> $conditions = array("LIKE" => array("Modelo.fecha" => "2009%"));

mala idea usar LIKE, es lento y ademas un campo de tipo 'date' permite
manejar fechas como fechas, no (solo) como strings...

--
Ricardo Mun~oz A.

Reply all
Reply to author
Forward
0 new messages