• Publicidad

Obtener el máximo de una base de datos

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Obtener el máximo de una base de datos

Notapor aindergm » 2012-07-03 09:51 @452

Quiero recoger el identificador más grande que haya en una base de datos, y para ello tengo una función que hace lo siguiente:

Sintáxis: [ Descargar ] [ Ocultar ]
  1. $sth = $dbh->prepare("SELECT max(id_vector) FROM android.datamining"); 
  2. my $rv = $sth->execute; 
  3. $result = $sth->fetchrow_hashref(); 
  4. $VectorID = $result->{id_vector)}; 
  5. $sth->finish; 


Sé que no se hace así porque no lo recoge bien, pero si en la 4 línea pongo max(id_vector) en vez de solamente id_vector, el programa no funciona.

¡Gracias!
aindergm
Perlero Nuevo
Perlero Nuevo
 
Mensajes: 17
Registrado: 2012-05-16 11:03 @502

Publicidad

Re: Obtener el máximo de una base de datos

Notapor explorer » 2012-07-03 11:37 @525

El problema es que Perl, al ver max(id_vector), se cree que es la llamada a una función llamada max(). Prueba a ponerlo entre comillas simples.

Aparte, veo que en la línea 4 sobra un ')'.

Lo que estás recuperando es una referencia a un hash.

Con Data::Dumper verás el contenido de ese hash:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use Data::Dumper;
  2. print Dumper $result;
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4
y así sabrás el nombre de la clave que debes usar.
JF^D Perl Programming Language
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 12855
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Obtener el máximo de una base de datos

Notapor aindergm » 2012-07-03 11:54 @538

¿Y cómo podría obtener solo el valor que busco, es decir solo el número?
Porque yo hago esto:

Sintáxis: [ Descargar ] [ Ocultar ]
  1. $sth = $dbh->prepare("SELECT max(id_vector) FROM android.datamining"); 
  2. my $rv = $sth->execute; 
  3. $result = $sth->fetchrow_hashref(); 
  4. $algo=Dumper $result; 
  5. $sth->finish; 


y en $algo me guarda lo siguiente:
$VAR1 = {
'max' => 31
};


Y lo que yo quiero obtener es el número 31.

¡¡¡Gracias!!!
aindergm
Perlero Nuevo
Perlero Nuevo
 
Mensajes: 17
Registrado: 2012-05-16 11:03 @502

Re: Obtener el máximo de una base de datos

Notapor explorer » 2012-07-03 19:44 @863

No has hecho lo que te hemos pedido, pero da igual: ya vemos que la clave del hash es 'max'. Así, para sacar el valor que quieres, lo tienes con

my $max_id_vector = $result->{'max'};

Pero se puede hacer de otra manera... en una sola línea:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $max_id_vector = $dbh->selectrow_array('SELECT max(id_vector) FROM android.datamining');
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


Esta línea hace todo el proceso: prepara la sentencia, la ejecuta, recupera el resultado, y lo guarda en la variable.
JF^D Perl Programming Language
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 12855
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado