Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/01/2014, 17:46
Avatar de xcars
xcars
 
Fecha de Ingreso: mayo-2005
Ubicación: El Salvador
Mensajes: 753
Antigüedad: 19 años
Puntos: 4
Problema ordenando datos en query

Saludos amigos, posiblemente sea algo sencillo, pero nose si sera que mi cabeza no computa pero no le he podido encontrar solucion, talvez me ayuden a encontrar una luz o una solucion.

Tengo una tabla de categorias que será recursiva para tener categorias padres e hijos, es decir, CATEGORIA_PADRE1 puede tener hijos y nietos. Por el momento, solo seran tres niveles, es decir padre,hijo,nieto pero queda la posibilidad de que sean mas niveles, aunque de eso me preocupo despues.
La tabla ademas tiene un campo de ordenacion interno, es decir, del padre1 como quiero que queden ordenados los hijos y de los hijos tambien puedo definir como quiero que queden ordenados los nietos.

El punto es que necesito hacer un query que obtenga el listado de categoria_id y categoria _nombre ordenado por padre, hijos, nietos en el orden del campo de ordenacion, ej:
Categoria Padre: Bienes y raices
hijo1: Compra y Venta (campo orden=1)
hijo2: Alquileres (campo orden=2)
hijo3: Otros (campo orden=3)

el hijo1 del hijo1: Casas (campo orden=1)
el hijo 2 del hijo1: Apartamentos (campo orden=2)
el hijo 3 del hijo1: otros en compra y venta(campo orden=3)

el hijo1 del hijo2: Casas (campo orden=1)
el hijo2 del hijo2: Apartamentos (campo orden=2)
el hijo3 del hijo2: Otros Alquileres(campo orden=3)

Y el resultado que busco del query ordenado seria:

Bienes y Raices
Compra y Venta
Casas
Apartamentos
Otros en compra y venta
Alquileres
Casas
Apartamentos
Otros Otros Alquileres
Otros (ojo este es el hijo3 del padre)

La estructura de la tabla es la siguiente:
Código MySQL:
Ver original
  1. CREATE TABLE `categorias` (
  2.     `categoria_id` INT(11) NOT NULL AUTO_INCREMENT,
  3.     `categoria_nombre` VARCHAR(75) NULL DEFAULT NULL,
  4.     `parent_id` INT(11) NULL DEFAULT NULL,
  5.     `categoria_descripcion` TEXT NULL,
  6.     `categoria_estado_id` ENUM('Activo','Inactivo') NULL DEFAULT NULL,
  7.     `categoria_precio` ENUM('Si','No') NULL DEFAULT 'Si',
  8.     `categoria_articulo` ENUM('Si','No') NULL DEFAULT 'Si',
  9.     `posicion_orden` TINYINT(4) NULL DEFAULT '1',
  10.     PRIMARY KEY (`categoria_id`),
  11.     INDEX `codigo_cat` (`categoria_id`)
  12. )

Y el query que tengo y que no funciona es
Código MySQL:
Ver original
  1. SELECT parent_id,categoria_id,categoria_nombre,posicion_orden FROM categorias ORDER BY parent_id ASC,posicion_orden

Alguien me podria dar una luz de como ordenar de esa manera o que podria hacer para lograr dicho resultado.

De antemano gracias por sus ayudas y aportes.
__________________
Con Microaplicaciones puedes hacer tu tienda en línea de forma sencilla y rápida, sin costos ocultos y con mucha responsabilidad.