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

ordenar alfabeticamente

Estas en el tema de ordenar alfabeticamente en el foro de Mysql en Foros del Web. help!! . Estoy tratando de ordenar alfabeticamente por apellido paterno una lista de estudiantes, pero el problema es que algunos estudiantes no tienen apellido paterno, ...
  #1 (permalink)  
Antiguo 31/10/2008, 09:09
 
Fecha de Ingreso: mayo-2008
Mensajes: 12
Antigüedad: 16 años
Puntos: 0
ordenar alfabeticamente

help!! . Estoy tratando de ordenar alfabeticamente por apellido paterno una lista de estudiantes, pero el problema es que algunos estudiantes no tienen apellido paterno, solo tienen apellido materno, mi tabla tiene 3 campos: nombre, apPaterno, apMaterno.
NOMBRE apPATERNO apMAtERNO
juan escobar suarez
pedro barrientos ojeda
jose mendez
maria rodriguez soliz
carlos guzman

utilizo la siguiente consulta
select *
from estudiante
where coEstudiante=$id
ORDER BY apPaterno, apMaterno ASC

esta consulta me ordena solo los que tienen los dos apellidos, y no los que tienen solo apellido materno es decir

carlos guzman
jose mendez
pedro barrientos ojeda
juan escobar suarez
maria rodriguez soliz

lo que quiero es que me ordene de la siguiente manera
pedro barrientos ojeda
juan escobar suarez
carlos guzman
jose mendez
maria rodriguez soliz

si alguien tuviera otra solucion le estaria muy agradecido gracias.
  #2 (permalink)  
Antiguo 31/10/2008, 09:33
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: ordenar alfabeticamente

Código sql:
Ver original
  1. SELECT nombre, IF( Appaterno != ''
  2. AND Apmaterno != '', CONCAT( Appaterno, ' ', Apmaterno ) , IF( Appaterno != ''
  3. AND Apmaterno = '', Appaterno, Apmaterno )  ) AS APELLIDOS
  4. FROM estudiante
  5. ORDER BY IF( Appaterno != ''
  6. AND Apmaterno != '', CONCAT( Appaterno, ' ', Apmaterno ) , IF( Appaterno != ''
  7. AND Apmaterno = '', Appaterno, Apmaterno ) ), nombre

Esto te muestra nombres y apellidos , y ordena por apellidos (no importa que tenga, uno o dos, y luego por nombre. He usado IF, aunque podría haber usado, y quizás es mejor, CASE... WHEN... THEN.

Código sql:
Ver original
  1. SELECT nombre,
  2. CASE WHEN Appaterno != ''
  3. AND Apmaterno != ''
  4. THEN CONCAT( Appaterno, ' ', Apmaterno )
  5. WHEN Appaterno != ''
  6. AND Apmaterno = ''
  7. THEN Appaterno
  8. ELSE Apmaterno
  9. END AS apellidos
  10. FROM estudiante
  11. ORDER BY CASE WHEN Appaterno != ''
  12. AND Apmaterno != ''
  13. THEN CONCAT( Appaterno, ' ', Apmaterno )
  14. WHEN Appaterno != ''
  15. AND Apmaterno = ''
  16. THEN Appaterno
  17. ELSE Apmaterno
  18. END, nombre

Última edición por jurena; 01/11/2008 a las 03:49
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 18:33.