Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

como uso el MAX()???

Estas en el tema de como uso el MAX()??? en el foro de Mysql en Foros del Web. Hola como estan.. les ocnsulto porq tengo el siguiente problema.. resulta que en mi base de datos manejo un codigo el cual armo la primera ...
  #1 (permalink)  
Antiguo 21/08/2007, 19:38
Avatar de paopao  
Fecha de Ingreso: junio-2004
Mensajes: 72
Antigüedad: 19 años, 10 meses
Puntos: 0
como uso el MAX()???

Hola como estan..

les ocnsulto porq tengo el siguiente problema..

resulta que en mi base de datos manejo un codigo el cual armo la primera vez y luego en los proximos inserts que haga primero lo consulto para hallar el max y luego lo incremento... eso me funsionaba bien hasta que el incremento agregó un numero demás es deciar que si el codigo venía siedo de 7 numeros ahora es de 8... entonces no se qu ees lo que pasa co una simple consulta como es la de SELECT MAX(idtg) as idtg FROM documentostg WHERE idprog='720', que no me toma el maximo luego de haberse agregado un numero mas al codigo como ya les habia dicho..

alguno codigos que tengo en la bd son los siguientes:

700721
700722
700723
700724
700725
...
700729 -> hasta aqui me sirvió, cuando incremento de nueve a 10 el max no me lo reconoce me sigue tomando este mismo codigo... y entonces me hace las nuevas inserciones para ese mismo codigo y debería continuar en uno nuevo así:

7007210
7007211
7007212...etc

no se si sea problema de tipos de datos en la bd, pero bueno diganme a ver que opinan al respecto... el tipo de dato que uso en la bd para el codigo es char(9)...

Gracias de antemano por alguna respuesta que me puedan dar.. de verdad la necesito urgente..
__________________
:si: El Mundo Merece Mejoras Instantaneas :si:
  #2 (permalink)  
Antiguo 22/08/2007, 05:34
Avatar de Kelpie  
Fecha de Ingreso: febrero-2002
Ubicación: NorthSpain
Mensajes: 609
Antigüedad: 22 años, 2 meses
Puntos: 8
Re: como uso el MAX()???

¿de qué tipo es idtg?

Por los valores que contiene yo diría que es texto. Si es así, max te devolverá según una ordenación de cadena, y en ese caso 111111 es menor que 2 porque el 1 es menor que el dos...

De todas maneras, saber el código que empleas para incrementar uno podría ayudar.
__________________
Kelpie
  #3 (permalink)  
Antiguo 22/08/2007, 09:27
Avatar de paopao  
Fecha de Ingreso: junio-2004
Mensajes: 72
Antigüedad: 19 años, 10 meses
Puntos: 0
Información Re: como uso el MAX()???

Cita:
Iniciado por Kelpie Ver Mensaje
¿de qué tipo es idtg?

Por los valores que contiene yo diría que es texto. Si es así, max te devolverá según una ordenación de cadena, y en ese caso 111111 es menor que 2 porque el 1 es menor que el dos...

De todas maneras, saber el código que empleas para incrementar uno podría ayudar.
Hola gracias por contestarme.. si efectivamente en la BD idtg es de tipo CHAR(9).. me imaginé que depronto ese era el inconveniente... pero entonces como puedo hacer.. para que el MAX me obtenga el mayor?? (si lo trabajo tipo numerico y se me genera un codigo asií: 7200720 => me tomaría el último cero???)... please indicame una forma de salir d emi problema ...

mira el codigo que yo utilizo para armar ese idtg es el siguiente..

Código PHP:
    private function generarId()
    {
        
$idprog=$this->getPrograma()->getIdprog();
        
//datos actuales de año y mes
        
$ano=date('y');
        
$mes=date('n');
        if(
$mes>=&& $mes<=6){$periodo='1';}
        else{
$periodo='2';}
        
$idTg=PersistenciaFachada::ObtenerDato('Max(idTg) as idTg'$this->getPrograma()->getIdprog(),'documentostg''idprog');
        
$this->idTg=$idTg[0]['idTg'];

        
//fechas año y periodo del codigo del Tg mas reciente
        
$anotg=substr($this->idTg3,2);
        
$pertg=substr($this->idTg,5,1);
            if(
$ano==$anotg && $periodo==$pertg)
            {
//se obtiene el cosecutivo por donde iría el ultimo Tg entregado para el periodo y el año coincidentes
                
$csc=substr($this->idTg,6);
                
$csc++;
                
$this->idTg=$idprog.$ano.$periodo.$csc;
            }else{
                
//En caso tal hay que reiniciar el csc
                
$csc=1;
                
$this->idTg=$idprog.$ano.$periodo.$csc;
            }
        return 
$this->idTg;
    } 
__________________
:si: El Mundo Merece Mejoras Instantaneas :si:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:54.