Hola de nuevo tico74:
El truco no está en el order by, sino en obtener la fecha del siguiente cumpleaños, de tal manera que la ordenación quedaría simplemente como
Creo que no seguiste el curso del ejemplo que te puse en mi post. checa este código
Código MySQL:
Ver originalQuery OK, 0 rows affected (0.44 sec)
mysql
> insert into tabla
values ('antonio', '1975-03-03'),('cristian', '1959-04-25'), -> ('francisco', '1981-09-08'), ('jose', '1982-04-28'), ('juan', '1980-04-26'),
-> ('luis', '1945-01-01'), ('miguel', '1978-06-06'), ('pedro', '1981-04-27');
Query OK, 8 rows affected (0.19 sec)
+-----------+------------+
| nombre | fecha_nac |
+-----------+------------+
| antonio | 1975-03-03 |
| cristian | 1959-04-25 |
| francisco | 1981-09-08 |
| jose | 1982-04-28 |
| juan | 1980-04-26 |
| luis | 1945-01-01 |
| miguel | 1978-06-06 |
| pedro | 1981-04-27 |
+-----------+------------+
%m'), date_format(fecha_nac
, '%d')), '%Y%m%d') fecha_siguiente_cumple
+-----------+------------------------+
| nombre | fecha_siguiente_cumple |
+-----------+------------------------+
| luis | 2011-01-01 |
| antonio | 2011-03-03 |
| cristian | 2011-04-25 |
| juan | 2011-04-26 |
| pedro | 2011-04-27 |
| jose | 2011-04-28 |
| miguel | 2011-06-06 |
| francisco | 2011-09-08 |
+-----------+------------------------+
Con esto obtendrías la primer parte de mi explicación, es decir, tomas sólo el mes y el día y le concatenas el año actual. Ahora lo que faltaría hacer en el select es algo como esto:
Código MySQL:
Ver original(
)
#Todavía no cumple años, por lo tanto seleccionas la misma fecha que calculaste
#ya cumplió años, por lo tanto en lugar de concatenar
#extract(year from curdate()) concatenas extract(year from curdate()) + 1
fecha_siguiente_cumple
esta consulta te estaría regresando lo siguiente:
Código MySQL:
Ver original+-----------+------------------------+
| nombre | fecha_siguiente_cumple |
+-----------+------------------------+
| juan | 2011-04-26 |
| pedro | 2011-04-27 |
| jose | 2011-04-28 |
| miguel | 2011-06-06 |
| francisco | 2011-09-08 |
| luis | 2012-01-01 |
| antonio | 2012-03-03 |
| cristian | 2012-04-25 |
+-----------+------------------------+
Lo único que faltaría es presentar la fecha en el formato que prefieras (26 de abril). Dale un vistazo a la consulta, y si tienes problemas lo comentas.
Saludos
Leo.