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

[SOLUCIONADO] consulta que compara dos campos de una misma tabla

Estas en el tema de consulta que compara dos campos de una misma tabla en el foro de Mysql en Foros del Web. Necesito hacer una consulta que compare dos columnas de tipo decimal de la misma tabla y me muestre los registros que tengan dos puntos de ...
  #1 (permalink)  
Antiguo 01/04/2016, 05:14
 
Fecha de Ingreso: abril-2001
Ubicación: Puerto Montt
Mensajes: 89
Antigüedad: 23 años, 1 mes
Puntos: 1
consulta que compara dos campos de una misma tabla

Necesito hacer una consulta que compare dos columnas de tipo decimal de la misma tabla y me muestre los registros que tengan dos puntos de diferencia entre una columna y otra
por ejemplo una columna se llama nota1, y la otra nota 2, necesito buscar todos los registros que la nota 2 contenga un valor dos puntos mas que la nota 1, he intentado una consulta del tipo:
Código MySQL:
Ver original
  1. SELECT nota1, nota2 FROM notas WHERE  (nota2 + 2.0) >= nota1

pero no me devuelve los resultados correctos me devuelve resultados donde la nota 2 es mayor a la nota 1, pero no dos puntos mas, alguien sabe como puedo armar esta consulta?

Última edición por gnzsoloyo; 01/04/2016 a las 05:19
  #2 (permalink)  
Antiguo 01/04/2016, 05:22
 
Fecha de Ingreso: abril-2016
Ubicación: C:\Usuarios\isaac
Mensajes: 33
Antigüedad: 8 años, 1 mes
Puntos: 1
Respuesta: consulta que compara dos campos de una misma tabla

Buenas arlin.
Lo que estas haciendo es comparar la nota1 con nota2.
Si es un casual tenemos la nota1 con un 7 y la nota 2 con un 8; si seguimos tu metodo la nota1 quedaria en 9 y seria >= 8. Y se te mostraría.

Aunque me explique mal, mas o menos me entenderás.

Para que te funcione perfectamente, tienes que hacer la siguiente consulta:

Código SQL:
Ver original
  1. SELECT nota1, nota2 FROM notas WHERE nota2=(nota1+2.0)

Con esto, consigues que se igualen (ya que la nota1+2.0 en teoría debe de darte 2 puntos menos que la nota2). Esto es si quieres que sea exactamente 2 puntos; si quieres que no sea exacto (2 puntos o mas), sería asi:
Código SQL:
Ver original
  1. SELECT nota1, nota2 FROM notas WHERE nota2>=(nota1+2.0)

Saludos y espero tu respuesta comentando si te ha funcionado o no.

Última edición por gnzsoloyo; 01/04/2016 a las 05:31
  #3 (permalink)  
Antiguo 01/04/2016, 05:28
 
Fecha de Ingreso: abril-2001
Ubicación: Puerto Montt
Mensajes: 89
Antigüedad: 23 años, 1 mes
Puntos: 1
Respuesta: consulta que compara dos campos de una misma tabla

Muchas gracias Isaac, tienes toda la razon,
  #4 (permalink)  
Antiguo 01/04/2016, 05:30
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, 5 meses
Puntos: 2658
Respuesta: consulta que compara dos campos de una misma tabla

Cita:
pero no me devuelve los resultados correctos me devuelve resultados donde la nota 2 es mayor a la nota 1, pero no dos puntos mas,
En realidad te está devolviendo los resultados correctos... en función del WHERE que has escrito.

Tu consulta indica que deben obtenerse aquellos registros donde la NOTA2 más dos puntos sea mayor o igual a la NOTA1... lo que no tienen nada que ver con lo que dices.
Esa condición, por ejemplo, devolvería verdad si la NOTA1 fuese 7,7 y la NOTA2 fuese 5,7; 8,0 o 1000,99.
NO estás pidiendo por una diferencia, sino por un rango, que no es lo mismo.

Para que se cumpla que la NOTA2 sea dos puntos por encima de NOTA1 es sencillamente:
Código MySQL:
Ver original
  1. ...
  2. WHERE TRUNCATE(NOTA2-NOTA1, 0) = 2;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: campos, registros, select, tabla
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 23:41.