Tengo la posibilidad de modificar el procedimiento oracle que contiene la consulta, o el php que recibe el arreglo. Lo que no puedo hacer es modificar la tabla agregando un campo orden que seria lo mas natural :/
La matriz tiene una forma similar a esta.
Código PHP:
Ver original
0 => 'NOMBRE' => string 'DARIO HOYOS' (length=11) 'C_LEGAJO' => string '11111' (length=5) 'OBSERVACIONES' => string 'asdasd' (length=6) 'C_ESTADOUSUARIO' => string '1' (length=1) 'FECHA_ALTA' => string '10/07/2012' (length=10) 'D_ESTADOUSUARIO' => string 'Aprobado' (length=8) 'N_SOLICITUD' => string '61' (length=2) 1 => 'NOMBRE' => string 'Dario Hoyos' (length=11) 'C_LEGAJO' => string '62631' (length=5) 'OBSERVACIONES' => string 'probando1234' (length=12) 'C_ESTADOUSUARIO' => string '1' (length=1) 'FECHA_ALTA' => string '05/07/2012' (length=10) 'D_ESTADOUSUARIO' => string 'Pendiente' (length=8) 'N_SOLICITUD' => string '50' (length=2) 2 => 'NOMBRE' => string 'DARIO HOYOS2' (length=12) 'C_LEGAJO' => string '11112' (length=5) 'OBSERVACIONES' => string 'asdas' (length=5) 'C_ESTADOUSUARIO' => string '1' (length=1) 'FECHA_ALTA' => string '10/07/2012' (length=10) 'D_ESTADOUSUARIO' => string 'Rechazado' (length=8) 'N_SOLICITUD' => string '62' (length=2)
Y el procedimiento (algo enredoso) es este
Código SQL:
Ver original
PROCEDURE sp_usuarios_en_sistema (p_fecha_desde IN VARCHAR2, p_fecha_hasta IN VARCHAR2, p_estado_usuario IN INTEGER, p_legajo IN INTEGER, p_nombre IN VARCHAR2, p_tipo_usuario IN INTEGER, p_n_solicitud IN INTEGER ,p_recordset OUT CURSOR_TYPE) AS BEGIN OPEN p_recordset FOR SELECT U.nombre, U.email, U.c_legajo, U.observaciones, U.c_estadousuario, TO_CHAR(U.fecha_alta, 'dd/mm/yyyy')fecha_alta, E.d_estadousuario, R.n_solicitud FROM cc_usuario U INNER JOIN cc_estadousuario E ON U.c_estadousuario = E.c_estadousuario INNER JOIN (SELECT DISTINCT n_solicitud, c_usuario FROM cc_rol_usuario WHERE c_usuario NOT IN (SELECT DISTINCT c_usuario FROM cc_rol_usuario WHERE c_tipousuario = 1 AND c_estado = 1) ) R ON U.c_usuario = R.c_usuario WHERE U.c_estadousuario <> 4 AND (p_fecha_desde IS NULL OR TO_DATE(p_fecha_desde,'dd/mm/yyyy') <= TRUNC(U.fecha_alta)) AND (p_fecha_hasta IS NULL OR TO_DATE(p_fecha_hasta,'dd/mm/yyyy') >= TRUNC(U.fecha_alta) ) AND (p_estado_usuario IS NULL OR p_estado_usuario = U.c_estadousuario OR p_estado_usuario = 0) AND (p_legajo IS NULL OR p_legajo = U.c_legajo OR p_legajo = 0) AND (p_nombre IS NULL OR UPPER(U.nombre) LIKE '%' || UPPER(p_nombre) || '%') AND (p_tipo_usuario IS NULL OR p_tipo_usuario = 0 OR EXISTS (SELECT 1 FROM cc_rol_usuario j WHERE j.c_usuario = U.c_usuario AND j.c_tipousuario = p_tipo_usuario )) AND (p_n_solicitud IS NULL OR p_n_solicitud = R.n_solicitud OR p_n_solicitud = 0) ORDER BY U.nombre; END sp_usuarios_en_sistema;