Tengo una matriz, producto de una consulta. Deseo ordenar sus elementos de acuerdo al campo N_SOLICITUD, pero el orden que requiero no es ascendente ni descendente, si no, la aparición de los registros "Pendiente" primeros.
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 originalPROCEDURE 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;