Thread View: es.comp.lenguajes.php
3 messages
3 total messages
Started by Ariel
Wed, 22 Sep 2004 17:53
Consulta MYSQL rango edad
Author: Ariel
Date: Wed, 22 Sep 2004 17:53
Date: Wed, 22 Sep 2004 17:53
25 lines
1999 bytes
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
Author: Alvaro G. Vicario
Date: Wed, 22 Sep 2004 18:49
Date: Wed, 22 Sep 2004 18:49
34 lines
2435 bytes
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
Author: Ariel
Date: Thu, 23 Sep 2004 11:51
Date: Thu, 23 Sep 2004 11:51
37 lines
2513 bytes
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