🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: es.comp.lenguajes.php
3 messages
3 total messages Started by Ariel Wed, 22 Sep 2004 17:53
Consulta MYSQL rango edad
#1
Author: Ariel
Date: Wed, 22 Sep 2004 17:53
25 lines
1999 bytes
Hola, estoy trabajando con PHP y MYSQL, dentro de esta consulta
calculo la edad de una persona segun la fecha de naciemiento que tengo
en la tabla DATOS:

SELECT * , CURRENT_DATE, ((YEAR(CURRENT_DATE) -
YEAR(datos.nacimiento)) - (RIGHT(CURRENT_DATE,5) <
RIGHT(datos.nacimiento, 5))) AS 'edad' FROM usuarios LEFT JOIN datos
ON usuarios.idUsuario = datos.idUsuario ;

hasta aqui funciona bien pero si agrego un WHERE para que me muestre
un rango de edaddes tengo problemas, la consulta que uso es:

SELECT * , CURRENT_DATE, ((YEAR(CURRENT_DATE) -
YEAR(datos.nacimiento)) - (RIGHT(CURRENT_DATE,5) <
RIGHT(datos.nacimiento, 5))) AS 'edad' FROM usuarios LEFT JOIN datos
ON usuarios.idUsuario = datos.idUsuario WHERE ('edad' >= 22) AND
('edad' <= 24) LIMIT 0 , 10

en este caso no me muestra nada y si le agrego ' ' a las edades
tampoco, alguien sabe donde esta el problema? Con BETWEEN tampoco me
funcion�, pude ser que el alias AS EDAD, no quede como numero?

Desde ya muchas gracias! 

Ariel
Re: Consulta MYSQL rango edad
#2
Author: Alvaro G. Vicario
Date: Wed, 22 Sep 2004 18:49
34 lines
2435 bytes
*** Ariel escribi�/wrote (22 Sep 2004 10:53:11 -0700):
> hasta aqui funciona bien pero si agrego un WHERE para que me muestre
> un rango de edaddes tengo problemas

El manual de MySQL explica:

Standard SQL doesn't allow you to refer to a column alias in a WHERE
clause. This is because when the WHERE code is executed, the column value
may not yet be determined. For example, the following query is illegal: 

SELECT id, COUNT(*) AS cnt FROM tbl_name WHERE cnt > 0 GROUP BY id;


http://dev.mysql.com/doc/mysql/en/Problems_with_alias.html

Vamos, que no se puede.

Sin embargo no creo que sea necesario montar todo este barullo. Si
necesitas mostrar registros cuya edad est� entre 22 y 24 simplemente haz un
BETWEEN restando a la fecha actual 22 y 24 a�os. Supongo que hay que hacer
alg�n peque�o ajuste pero b�sicamente �sa es la idea.



(Creo que no es necesario mandar el mensaje a cuatro grupos, el tiempo de
los dem�s tambi�n tiene valor)


-- 
-+ �lvaro G. Vicario - Burgos, Spain
+- http://www.demogracia.com (la web de humor barnizada para la intemperie)
++ Las dudas inform�ticas recibidas por correo ir�n directas a la papelera
-+ I'm not a free help desk, please don't e-mail me your questions
--
Re: Consulta MYSQL rango edad
#3
Author: Ariel
Date: Thu, 23 Sep 2004 11:51
37 lines
2513 bytes
Alvaro, en primer lugar gracias por tu ayuda, voy a seguir tu consejo
con respecto a la consulta.
En segundo lugar pido disculpas por mandar el mensaje a varios grupos,
es la primera vez que uso los grupos asi que no estaba muy seguro como
hacerlo.

Gracias!
Ariel 


"Alvaro G. Vicario" <kAlvaroNOSPAMTHANKS@terra.es> wrote in message news:<zwl4zmp2s5h0$.1k0y11ckqt4de.dlg@40tude.net>...
> *** Ariel escribi�/wrote (22 Sep 2004 10:53:11 -0700):
> > hasta aqui funciona bien pero si agrego un WHERE para que me muestre
> > un rango de edaddes tengo problemas
> 
> El manual de MySQL explica:
> 
> Standard SQL doesn't allow you to refer to a column alias in a WHERE
> clause. This is because when the WHERE code is executed, the column value
> may not yet be determined. For example, the following query is illegal: 
> 
> SELECT id, COUNT(*) AS cnt FROM tbl_name WHERE cnt > 0 GROUP BY id;
> 
> 
> http://dev.mysql.com/doc/mysql/en/Problems_with_alias.html
> 
> Vamos, que no se puede.
> 
> Sin embargo no creo que sea necesario montar todo este barullo. Si
> necesitas mostrar registros cuya edad est� entre 22 y 24 simplemente haz un
> BETWEEN restando a la fecha actual 22 y 24 a�os. Supongo que hay que hacer
> alg�n peque�o ajuste pero b�sicamente �sa es la idea.
> 
> 
> 
> (Creo que no es necesario mandar el mensaje a cuatro grupos, el tiempo de
> los dem�s tambi�n tiene valor)
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads