Ver Mensaje Individual
  #4 (permalink)  
Antiguo 21/10/2008, 04:53
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 17 años
Puntos: 300
Respuesta: Ordenar distintos campos unidos

Cita:
Iniciado por lhaian Ver Mensaje
Buenas:

Mi problema es simple y a la vez complejo: Tengo una tabla que tiene dos campos llamados usr_id y usr_parent. El asunto es el siguiente: hay padres e hijos en la base de datos. Todos tienen un usr_id, pero los padres tienen usr_parent=0 y los hijos tienen un usr_parent como el usr_id del padre, a parte de su propio usr_id. Me gustaria ordenar esta tabla de manera que fuera por orden de usr_id pero que a continuacion de cada usr_id padre vinieran los hijos de ese padre. Cuando terminaran esos hijos pues otro padre y despues otro hijo. Llevo dandole vueltas toda la tarde pero no lo saco, asi que agradeceria a quien fuese que me echara un cable :) y si es de Granada, le invito a una caña xD

Un saludo y gracias de antemano!
Lo que quieres hacer es posible, aunque te diré que lo que estás haciendo es un modelo jerárquico, y para eso deberás usar otra sintaxis. No obstante, para no meterte en el mundo del selfjoin (mira si quieres lo que dice el manual MySqL sobre modelos jerárquicos), te he buscado un atajo, una medio chapuza para resolverte tu problema y mostrar ese orden que quieres. Sería esta:
Código sql:
Ver original
  1. SELECT nombrecampo FROM nombretabla
  2. ORDER BY IF( usr_parent =0, usr_id, usr_parent ) , usr_parent

Usa para ordenar el campo usr_id si se trata de un padre; y usr_parent si se trata de un hijo; con eso reúnes padres e hijos; luego para ordenar al padre antes pones como segundo criterio de ordenación usr_parent, que es 0 en el caso del padre.

Pero eso sólo te permite ordenar por esos usr_parent y usr_id, no por el nombre de los padres y luego el de los hijos. Para eso, según creo, tendrías que recurrir a la sintaxis propia de los modelos jerárquicos.

Última edición por jurena; 22/10/2008 a las 07:31