Suponiendo que quiero volcar el resultado de una consulta en un hash, y luego ordenar el hash, no por la key sino por el value.
El value se compone de la concatenación de dos campos de la tabla: uno numérico y otro varchar.
Using perl Syntax Highlighting
my $ref = $dbh_m->selectall_arrayref ( " SELECT id_campo , codigo, nombre " .
" FROM tabla " );
foreach (@$ref) {$arreglo{${$_}[0]} = ${$_}[1] . ' - ' . ${$_}[2] ; }
" FROM tabla " );
foreach (@$ref) {$arreglo{${$_}[0]} = ${$_}[1] . ' - ' . ${$_}[2] ; }
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
Obtenido el hash ahora, ¿cómo lo ordeno por valor cuando quiero RESPETAR en la ordenación el campo numérico que formó la concatenación y ahora ya es un string?
Using perl Syntax Highlighting
my (@arreglo) = sort { $ arreglo {$a} <=> $ arreglo {$b}} keys % arreglo;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
¿Cómo hago para ordenar el resultado de la consulta previa a la concatenación?
Por ejemplo, suponiendo que la consulta devuelva
- Código: Seleccionar todo
1 , 11 , nombre 1
2, 232 , nombre 2
3, 254 , nombre 3
4, 1, nombre4
quiero obtener un hash ORDENADO de la siguiente forma: tiene en cuenta el campo numérico de la concatenación:
- Código: Seleccionar todo
{ ‘4’ => ’ 1 – nombre4’,
‘1’ => ’ 11 – nombre1’,
‘2’ => ’ 232 – nombre2’,
‘3’ => ’ 254 – nombre3’ }
Muchas gracias