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

Minimo valor de un campo

Estas en el tema de Minimo valor de un campo en el foro de Mysql en Foros del Web. Hola que tal, este es mi primer tema dentro del foro Me he decidido registrarme en el ya que tengo un problema con un query ...
  #1 (permalink)  
Antiguo 18/11/2012, 00:18
Avatar de FenixGr  
Fecha de Ingreso: noviembre-2012
Mensajes: 3
Antigüedad: 11 años, 5 meses
Puntos: 0
Pregunta Minimo valor de un campo

Hola que tal, este es mi primer tema dentro del foro
Me he decidido registrarme en el ya que tengo un problema con un query que parece muy sencillo pero no me sale con los resultados esperados y es por eso que recurro a ustedes.

Mi problemas es que tengo la siguiente tabla

Código:
idcamino          nodo      distancia     nivel     visitado
1	            1	         0	   1	     1
2	            6	      1657	   1	     0
3	           13	      1649	   1	     0
4	            4	      1609	   1         0
5	            9	       922         4	     0
6	           17	      1324	   9	     0
7	           24	       720	   9         0
8	           28	      1159	   9	     0
Si ejecuto el siguiente query:
SELECT nodo FROM camino WHERE distancia=(SELECT MIN(distancia) FROM camino WHERE nivel= 1 AND distancia != '0')
Me devuelve el 4

Si ahora ejecuto este:
SELECT nodo FROM camino WHERE distancia=(SELECT MIN(distancia) FROM camino WHERE nivel= 4 AND distancia != '0')
Me devuelve el 9

Hasta ahí todo bien :)

Pero si ejecuto el siguiente:
SELECT nodo FROM camino WHERE distancia=(SELECT MIN(distancia) FROM camino WHERE nivel= 9 AND distancia != '0')
Me devuelve el 28 y me tendría que devolver el 24

Ya intente de todo y no logro hacer que me seleccione el 24 y no se porque pueda ser, dirán que me complico la vida y que ponga el idcamino en el WHERE pero el valor del nivel no siempre va a ser igual ya que es un recorrido de un grafo y no siempre es igual así que no me serviría.

Agradecería si alguien me pudiera ayudar diciéndome que es lo que estoy haciendo mal o porque esque me devuelve el 28.
  #2 (permalink)  
Antiguo 18/11/2012, 13:40
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 1 mes
Puntos: 47
Respuesta: Minimo valor de un campo

Te recomendaria que para no tener que usar 2 consultas en 1 uses limit y order por ejemplo:

Código MySQL:
Ver original
  1. SELECT nodo FROM camino WHERE nivel = 9 AND distancia != 0 ORDER BY distancia ASC LIMIT 1;

Con esta consulta te seleccionaria los nodos 17, 24 y 28 ya que son los que tienen nivel 9 y su distancia no es 0.

A su vez los ordenara por distancia en forma ascendente por lo cual quedarian:

24 - 720
28 - 1159
17 - 1324

y al ponerle LIMIT 1 te devolvera solo 1 fila por lo cual deberia quedar

24 que tiene la distancia 720

Proba aver si te resulta

Salu2
  #3 (permalink)  
Antiguo 18/11/2012, 15:47
Avatar de FenixGr  
Fecha de Ingreso: noviembre-2012
Mensajes: 3
Antigüedad: 11 años, 5 meses
Puntos: 0
De acuerdo Respuesta: Minimo valor de un campo

Gracias por responder djaevi

La respuesta que me das es correcta, ya me selecciona el 24

Aunque ayer vi que cometí el error de poner el campo distancia como varchar y no como int y supongo que eso hacia que se confundiera mysql
  #4 (permalink)  
Antiguo 18/11/2012, 15:58
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Minimo valor de un campo

Cita:
Aunque ayer vi que cometí el error de poner el campo distancia como varchar y no como int y supongo que eso hacia que se confundiera mysql
Exacto.
Jamás se debe poner un valor numérico o de fecha como VARCHAR.
Si lo haces con fechas, termina resultando que el 31/12/1701 es mayor que el 01/01/2099, lo que es obviamente imposible.
En el caso de los números, el 720, termina siendo mayor que el 100000, considerado como cadena de texto.

PD: Precisamente te estaba por preguntar cuál era la definición de la tabla, viendo que los resultados erran incorrectos para campos bien definidos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 18/11/2012, 16:10
Avatar de FenixGr  
Fecha de Ingreso: noviembre-2012
Mensajes: 3
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Minimo valor de un campo

Cita:
Jamás se debe poner un valor numérico o de fecha como VARCHAR.
Si lo haces con fechas, termina resultando que el 31/12/1701 es mayor que el 01/01/2099, lo que es obviamente imposible.
En el caso de los números, el 720, termina siendo mayor que el 100000, considerado como cadena de texto.
Si...tuve un error primario pero es bueno saber esto que me comentas para la próxima no cometer los mismos errores.

Bueno mi problema a quedado resuelvo, ¡Gracias! y hasta la próxima pregunta
  #6 (permalink)  
Antiguo 18/11/2012, 18:32
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 1 mes
Puntos: 47
Respuesta: Minimo valor de un campo

Yo te iba a comentar lo mismo xq me llamo la atencion que pongas distancia != '0' con los apostrofes pero luego se me paso jeje

Salu2!

Etiquetas: select, tabla, campos
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 21:49.