Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

consulta jerarquica o por categorias en MySql

Estas en el tema de consulta jerarquica o por categorias en MySql en el foro de Bases de Datos General en Foros del Web. Saludos, Estoy haciendo una aplicación de noticias en php y mysql y la tabla de las secciones o temas de las noticias me llevan de ...
  #1 (permalink)  
Antiguo 15/04/2005, 02:32
 
Fecha de Ingreso: noviembre-2003
Mensajes: 76
Antigüedad: 20 años, 5 meses
Puntos: 0
consulta jerarquica o por categorias en MySql

Saludos,
Estoy haciendo una aplicación de noticias en php y mysql y la tabla de las secciones o temas de las noticias me llevan de cabeza, a ver si alguien puede echarme una mano.
Para crear secciones y subsecciones de forma jerárquica he creado la siguiente tabla:

CREATE TABLE secciones
(
id_seccion int(11) NOT NULL default '0',
id_padre int(11) default NULL,
nombre varchar(50) NOT NULL default '',
descripcion varchar(150) NOT NULL default '',
PRIMARY KEY (`id_seccion`)
)

Los campos importantes son:
id_seccion --> le doy números incrementando el anterior
id_padre --> meto el id_seccion de la sección padre...

Pues la cuestión es que en el formulario para crear la sección he puesto un select (PADRE) en el que quiero que mediante una consulta aparezcan todas las secciones existentes para poder seleccionar una, en caso de que estuviésemos creando una subsección e intentaba que la consulta sacase las secciones de forma jerarquica... Pues en los apuntes que tengo de sql existe una formula para hacer esto el “connect by [prior] expresion= [prior] expresión start with expresión=valor;” pero he hecho algunas pruebas y me da errores mysql... alguien puede decirme algo?
Como se haría la consulta o que otra alternativa se puede usar para conseguir mostrar en el select todas las secciones existentes de forma jerarquica ¿?

Gracias
  #2 (permalink)  
Antiguo 15/04/2005, 02:57
Avatar de Vice  
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 20 años, 9 meses
Puntos: 2
Por lo que yo sé, esta posibilidad no está contemplada en el mysql actualmente.

Si sólo tienes sección y un nivel de subsección, puedes conseguirlo cruzando la tabla consigo misma una vez. Si tienes más niveles, tendrías que hacer un cruce por cada nivel, lo cual se complica si tienes muchos niveles.
Para un nivel de subsecciones:
Código:
select * 
from secciones a left join secciones b on a.id_padre=b.id_padre
where a.id_padre is null
Espero que esto te sirva de ayuda.
Un saludo.
__________________
Estoy contagiado de Generación-I
  #3 (permalink)  
Antiguo 15/04/2005, 03:32
 
Fecha de Ingreso: noviembre-2003
Mensajes: 76
Antigüedad: 20 años, 5 meses
Puntos: 0
Muchas gracias Vice,
yo pensaba dar la opción de que se pudisen crear todos los niveles que el usuario quisiese, pero si no existe la opcion del connect by... la cosa se complica... ya no se que hacer, ahora si que estoy bloqueado del todo...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 19:30.