Ver Mensaje Individual
  #7 (permalink)  
Antiguo 19/12/2008, 10:09
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Ordenar según varios elementos agrupados

xenon254,
soy de la opinión de gnzsoloyo: lo mejor, crear una tabla nueva posiciones algo así:
ID posicion
1 portero
2 defensa
3 centrocampista
4 delantero
5 entrenador

En la tabla donde tienes los nombres el campo posicion deberá ser numérico y en él guardarás el valor del ID. Es decir, en el campo posicion de la tabla donde incluyes los nombres, en el registro del portero, deberá aparecer 1.

Luego la consulta la ordenas por ID.

Así estarás usando el id como elemento que te permita ordenar.
También podrías añadir otro campo numérico llamado criterioordenacion, en el que pondrías el número según te interese ordenar. Esto te ofrece algo más de flexibilidad, porque si más adelante se te ocurre introducir nuevas posiciones, mediovolante, y cosas así, te bastará con reordenar esos números de criterioordenacion en la tabla posiciones, algo que te resultaría dificultoso hacer con el id, que es primary key y sirve para establecer las relaciones. Yo en estos casos, salvo que la lista esté completamente cerrada, prefiero esto:
ID posicion criterioordenacion
1 portero 1
2 defensa 2
3 centrocampista 3
4 delantero 5
5 entrenador 6
6 mediovolante 4

y claro, cuando hago la consulta, ordeno por criterioordenacion, algo más flexible y que permite añadir nuevos registros.


En el selector tendrás que hacer que lo seleccionado, el value sea el id, y lo mostrado la posicion, pero eso no te resultará dificil.

Como bien dice gnzsoloyo, hay otras soluciones, como por ejemplo esta:

Código sql:
Ver original
  1. SELECT nombre, posicion,
  2. CASE WHEN posicion = "portero"
  3. THEN 1
  4. WHEN posicion = "defensa"
  5. THEN 2
  6. WHEN posicion = "centrocampista"
  7. THEN 3
  8. WHEN posicion = "delantero"
  9. THEN 4
  10. WHEN posicion = "entrenador"
  11. THEN 5
  12. ELSE 6
  13. END AS orden
  14. FROM tabla
  15. ORDER BY orden, nombre


Pero no te la recomiendo pudiendo hacer lo otro.