MySQL - Dificultadoes con MAX()

 
Vista:
sin imagen de perfil
Val: 4
Ha aumentado su posición en 12 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Dificultadoes con MAX()

Publicado por Etienne Alexis (2 intervenciones) el 03/01/2017 17:06:03
Saludos, tengo un problema, al parecer, con la función MAX(). En mi base de datos existe una tabla que se llama cargos, en ella se guardan todos los cargos que lleva un paciente(tomografías, rayos x, laboratorio, etc). Cuando se ingresa en este caso un estudio de laboratorio, este debe de llevar un consecutivo LXXXX, es decir que el primer cargo de laboratorio es L0001 y así sucesivamente. Si es de rayos x entonces R0001 y si es tomografía T0001. Estos se guardan en el campo llamado: folioarea. para añadir el consecutivo primero obtengo el máximo folio mediante este código php y despues asigno el consecutivo.

1
2
3
4
5
6
7
8
9
10
if($producto>=40000 and $producto<=40679 ){
	$maxz="select count(folioarea),Max(folioarea) as nf from cargos where folioarea like 'L%'";
	$resultx = mysqli_query($mysqli,$maxz)or die(mysqli_error());
	while($row=mysqli_fetch_array($resultx)){
		$max=$row[1];
		$maxl=$row[1];
		$var="L".substr((substr($maxl,1)+100001),1);
	}
}
echo $var;

El IF que ahí se menciona esta correcto, cuando verdadero, accede al resto del codigo
El problema que tengo es que cuando llega al valor L9999 se inserta el L10000 pero cuando consulto el MAX() me arroja el L9999, incluso use la función SUBSTR() pero da el mismo resultado.El código para insertar esta bien pues inserta el registro L10000 pero siempre inserta L10000 porque el MAX arroja L9999 Adjunto evidencia de fotos

query
query2
query3
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 13
Ha aumentado su posición en 3 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Dificultadoes con MAX()

Publicado por José Luis (4 intervenciones) el 04/01/2017 01:17:51
Hola,

El problema es que estas haciendo comparacion de caracteres o letras.

'L9' es mayor que 'L11'

Por lo que debes hacer es quitar el primer caracter y luego convertir a numero para obtener un numero y asi poder obtener un correcto maximo.

Saludos
José Luis
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar