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 originalSELECT nombre, IF( Appaterno != ''
AND Apmaterno != '', CONCAT( Appaterno, ' ', Apmaterno ) , IF( Appaterno != ''
AND Apmaterno = '', Appaterno, Apmaterno ) ) AS APELLIDOS
FROM estudiante
ORDER BY IF( Appaterno != ''
AND Apmaterno != '', CONCAT( Appaterno, ' ', Apmaterno ) , IF( Appaterno != ''
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 originalSELECT nombre,
CASE WHEN Appaterno != ''
AND Apmaterno != ''
THEN CONCAT( Appaterno, ' ', Apmaterno )
WHEN Appaterno != ''
AND Apmaterno = ''
THEN Appaterno
ELSE Apmaterno
END AS apellidos
FROM estudiante
ORDER BY CASE WHEN Appaterno != ''
AND Apmaterno != ''
THEN CONCAT( Appaterno, ' ', Apmaterno )
WHEN Appaterno != ''
AND Apmaterno = ''
THEN Appaterno
ELSE Apmaterno
END, nombre