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

ordenar alfabeticamente

Estas en el tema de ordenar alfabeticamente en el foro de Bases de Datos General 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:22
 
Fecha de Ingreso: mayo-2008
Mensajes: 12
Antigüedad: 16 años, 5 meses
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:30
 
Fecha de Ingreso: septiembre-2008
Mensajes: 53
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: ordenar alfabeticamente

Hola Intenta hacer esto:

Código:
select *
from estudiante
where coEstudiante=$id
ORDER BY apPaterno DESC, apMaterno ASC
  #3 (permalink)  
Antiguo 01/11/2008, 11:12
Avatar de Deschamps  
Fecha de Ingreso: octubre-2008
Mensajes: 257
Antigüedad: 16 años, 1 mes
Puntos: 8
Respuesta: ordenar alfabeticamente

Cita:
lo que quiero es que me ordene de la siguiente manera
pedro ----barrientos---ojeda
juan-------escobar------suarez
carlos --------------------guzman
jose------------------------mendez
maria-----rodriguez -----soliz
¿Y exactamente qué criterio de ordenación sigue lo que tu quieres?
Porque a mí me da que Carlos Guzman y Jose Mendez están metidos ahí en medio un poco a huevo.

Lo que se me ocurre es que podrías seleccionar antes en tu tabla aquellos registros que no tienen primer apellido, para insertarles en ese campo una copia del segundo apellido, además de marcarlos con algún caracter para que al hacer luego el select ordenado "normal" de todos ellos, sepas discriminar que esos apellidos han sido añadidos posteriormente, y de ese modo no los muestres en pantalla si no quieres.

En cualquier caso, esto es un tema de SQL... no de PHP.

Un saludo.
  #4 (permalink)  
Antiguo 01/11/2008, 15:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: ordenar alfabeticamente

Tema trasladado a Bases de Datos.
  #5 (permalink)  
Antiguo 01/11/2008, 16:01
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: ordenar alfabeticamente

Aunque te respondí en el foro MySQL, vuelvo a pegar aquí la respuesta que creo puede solucionar el problema. Yo te recomendaría la segunda, pero ambas, creo, hacen el trabajo:
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
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 14:40.