[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