Ver Mensaje Individual
  #8 (permalink)  
Antiguo 25/01/2014, 05:03
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Problema ordenando datos en query

Siento haberte hecho perder el tiempo.... pensaba que lo tenia solucionado solo con un order by pero veo que no.

Yo uso una query ordenada como sigue

Código MySQL:
Ver original
  1. ...order by nivel,padre,orden;

y apartir de ella con programación externa obengo el orden que pedias.

La programación externa es off topic en este foro... pero espero que explicar la estrategia seguida no lo sea....

Vamos a crear un ArrayDef con el orden buscado

Código pre:
Ver original
  1. ArrayDef = array() fuera del bucle
  2. Inicio Bucle sobre los registros en el orden anterior
  3.  
  4.      Declaro ArrayBefore y ArrayAfter
  5.      Si RegistroActual.padre=0  
  6.          inserto RegistroActual en la última posición del ArrayDef
  7.      Si RegistroActual.padre<>0
  8.          Inicio bucle sobre ArrayDef
  9.              leo ArrayDef hasta encontrar al padre y/o un hermano de orden inferior
  10.                      los guardo en ArrayBefore,
  11.              luego sigo leyendo ArrayDef hasta el final
  12.                      los guardo en ArrayAfter
  13.          loop
  14.          Redeclaro ArrayDef=array() (se queda vacia)
  15.          Inserto en ArrayDef
  16.              ArrayBefore, RegistroActual, ArrayAfter
  17.      fin si
  18. loop

Padre es cero cuando no hay un progenitor....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 25/01/2014 a las 05:27