[caracas-pm] Ordenar resultados de consulta class::dbi
Christian Sánchez
cass_ba at cantv.net
Tue Dec 13 05:50:36 PST 2005
Buen día,
estoy haciendo una pequeña aplicación usando Class::DBI, tengo, entre
otras, estas 3 tablas:
Tabla lista_ed (Guarda las inserciones de los clientes en una publicación)
------------------------
id_lista_ed
edicion
etc... otros datos mas
Tabla lista_ed_ins (Esta es una tabla que guarda la descripción
inserciones de clientes en una publicación)
------------------------------
id_lista_ed_ins
id_lista_ed <-- se relaciona con la tabla lista_ed
id_cliente <-- se relaciona con la tabla clientes
etc .. otros datos mas
Tabla clientes (guarda los datos de los clientes)
---------------------------
id_cliente
nombre
dirección
etc ....
Creo las clases para cada tabla, con los respectivos campos, etc y
agrego las siguientes relaciones:
en la clase Cliente:
Mercadeo::Cliente->has_many(inserciones => 'Mercadeo::ListaEdIns');
y en la clase ListaEdIns:
Mercadeo::ListaEdIns->has_a(id_cliente => 'Mercadeo::Cliente');
hasta aqui todo funciona bien, el único problema (aunque no es un
problema, sino más bien una duda) es cuando quiero sacar un listado de
clientes por edición, eso lo consigo fácilmente con algo asi:
my @listaclientes;
foreach (Mercadeo::ListaEdIns->search_like(id_lista_ed =>
$id_lista_ed) ) {
push @listaclientes,
{
id_lista_ed_ins => $_->id_lista_ed_ins,
nombre_cli => $_->id_cliente->nombre,
insercion => $_->insercion,
estatus => $_->estatus,
}
}
Asi obtengo la lista de clientes, lo que necesito es que se ordenen por
el campo "nombre_cli" , pero no puedo (o no sé como) indicar en la
búsqueda que lo ordene por id_cliente->nombre, lo que he logrado es
ordenarlo por el id_cliente. En las declaraciones de las clases
modifique esto:
Mercadeo::ListaEdIns->has_a(id_cliente => 'Mercadeo::Cliente', {order_by
=> 'nombre'});
pero tampoco funciona.
Entonces la duda que tengo es si esto es posible directamente, una
solución seria ordenar el array despues de haberlo obtenido, o ejecutar
una consulta SQL directa, esas si funcionan, pero imagino que con
class::dbi se puede hacer de alguna forma.
Cualquier ayuda o sugerencia sera bien recibida ;)
Saludos.
--
Christian Sánchez
Usuario GNU/Linux 234800
www.unplug.org.ve
Si, yo uso Debian.
More information about the caracas-pm
mailing list