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

como utilizar una variable calculada en el WHERE

Estas en el tema de como utilizar una variable calculada en el WHERE en el foro de Mysql en Foros del Web. Hola, he calculado la edad de una tabla de personas, pero en cuanto condiciono por ese calculo, siempre me devuelve 0 encontrados. SELECT @edad := ...
  #1 (permalink)  
Antiguo 30/04/2012, 11:43
 
Fecha de Ingreso: noviembre-2008
Mensajes: 288
Antigüedad: 15 años, 5 meses
Puntos: 2
como utilizar una variable calculada en el WHERE

Hola,
he calculado la edad de una tabla de personas,
pero en cuanto condiciono por ese calculo, siempre me devuelve 0 encontrados.


SELECT @edad := (YEAR(CURDATE())-YEAR(fecha_nacimiento))-(RIGHT(CURDATE(),5)<(RIGHT(fecha_nacimiento,5))) AS `edad`, personas.id
FROM `personas`
WHERE ( @edad = @edad )

Este query debería devolver siempre algo, pues el where no debería filtrar nada, sinembargo, basta con que utilice ahi una variable "@" para que no devuelva nada.

( si solo utilizo la variable edad sin el '@', me dice que no existe tal campo, ya que en la tabla no existe ).

alguien sabe por qué el error?

gracias
  #2 (permalink)  
Antiguo 30/04/2012, 13:22
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: como utilizar una variable calculada en el WHERE

¿Probaste hacerlo así?:
Código MySQL:
Ver original
  1. SELECT TIMESTAMPDIFF(YEAR, CURDATE, fecha_nacimiento)`edad`, personas.id
  2. FROM `personas`
  3. WHERE TIMESTAMPDIFF(YEAR, CURDATE, fecha_nacimiento) >0;
En este caso, dado el parámetro de selección, TIMESTAMPDIFF() devuelve el numero de años completos, por lo que la consulta no devolverá aquellas personas que no tengan al menos un año de edad.
Si esta no es la condición buscada, aclaranos mejor cuál es el criterio de selección.

Respecto al uso de variables de usuario, son algo complejas de utilizar, y por defecto deben estar inicializadas antes de utilizarlas o su valor será NULL, en cuyo caso la consulta jamás devolverá datos porque cualquier cálculo realizado con un valor NULL da... NULL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 30/04/2012, 13:50
 
Fecha de Ingreso: noviembre-2008
Mensajes: 288
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: como utilizar una variable calculada en el WHERE

Hola gnzsoloyo.
No, no he probado como me decis. Si bien tengo varias variables además de la fecha por calcular, al menos es una alternativa de lograr el query.
Voy a implementar la forma que esa, y si hay problemas vuelvo a escribirte.
Muchas gracias.
  #4 (permalink)  
Antiguo 30/04/2012, 14:01
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: como utilizar una variable calculada en el WHERE

Si tu problema abarca diversas condiciones, sería mejor que nos expliques mejor todo el caso para poder buscar una alternativa que se ajuste mejor.
Cuando las descripciones son parciales nos nos ayuda a entender la problemática.
__________________
¿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: calculadas, select, variables
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 08:47.