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

Ordenamiento arborescente de los resultados de una consulta de la base de datos

Estas en el tema de Ordenamiento arborescente de los resultados de una consulta de la base de datos en el foro de Bases de Datos General en Foros del Web. Me gustaría mostrar los resultados de mi base de datos, ordenados manera de un índice arborescente, en la forma: 1. Tema 1.1. Apartado 1 del ...
  #1 (permalink)  
Antiguo 13/02/2004, 14:34
Avatar de Lio Tse  
Fecha de Ingreso: febrero-2004
Mensajes: 21
Antigüedad: 20 años, 2 meses
Puntos: 0
Pregunta Ordenamiento arborescente de los resultados de una consulta de la base de datos

Me gustaría mostrar los resultados de mi base de datos, ordenados manera de un índice arborescente, en la forma:

1. Tema
1.1. Apartado 1 del tema
1.1.1 Subapartado 1 del apartado 1 del tema
1.1.1.1. Subapartado 1 del subapartado 1 del apartado 1 del tema.
1.1.2. Subaparatado 2 del apartado 1 del tema
1.2. Apartado 2 del tema
...

y así sucesivamente, de manera que si posteriormente quisiera incluir un nuevo subapartado del apartado 1, por ejemplo, el resultado de la consulta me aparezca ordenado en su lugar correspondiente... antes del apartado 2.
Por ahora, se me ha ocurrido sólo que necesite el empleo de 2 campos para identificar los subapartados: uno que identifica el número de subapartados que tiene el apartado en cuestión ($numsubs) y otro que identifica a qué apartado superior pertenece ($idapsup) que para el iniciador del tema toma valor 0, y para el resto el $id de registro del apartado superior.
Pero me temo que esto no es suficiente para resolver el problema... pero sí sobrado para qué me líe y no sepa por donde tirar, por más vueltas que le doy al asunto, ... se me nota demasiado que recien empiezo en esto del php... entiendo que es una forma de ordenación multidimensional de un array, pero no consigo encontrar la clave para que esa ordenación me dé el resultado que quiero...

¿ Alguien podría ayudarme?

Saludos
  #2 (permalink)  
Antiguo 13/02/2004, 14:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Creo que deberías definir bien tu modelo de datos para la Base de datos (tabla(s)) que requieras .. pero todo eso en el foro de Base de datos y .. luego implementar el tipo de consultas SQL que necesitaras para finalmente ejecutar esas consultas dese PHP ...

Muevo tu mensaje al foro de Base de datos para que te orienten sobre el mejor modelo de datos para ese tipo de estructuras.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 14/02/2004, 08:35
Avatar de Lio Tse  
Fecha de Ingreso: febrero-2004
Mensajes: 21
Antigüedad: 20 años, 2 meses
Puntos: 0
Cita:
Mensaje Original por Cluster
Creo que deberías definir bien tu modelo de datos para la Base de datos (tabla(s)) que requieras ..
No creo que sea tema de definir tablas... tampoco pretendo reordenar la base de datos... se trata de una "simple" reordenación de array... se trata de una consulta de base de datos que recoge los registros referentes a un tema con

$sql="select id, numsubs, idaparsup from tabla where idtema=".$id;

esto generará una salida de registros rereferidos a un mismo tema y ordenados secuencialmente en función del campo 'id'

yo lo que pretendo es reordenar estos registros, generando un array (llamémosle 'ad') ordenado jerárquicamente en función de la dependencia entre registros que se recoge en los campos idaparsup y numsubs. Creo que la información que dan estos dos es suficiente para crear una rutina de ordenación... he pensado que quizás habría que añadir un campo ordinal que recogiera el orden de subaparatados, de forma que para el tema tendría el valor 0, para el apartado tendría, valor 1, para el subapartado del apartado tendría valor 2... y así sucesivamente... pero creo que estaría almacenando una información superflua y no tengo claro en que facilitaría la rutina de ordenación... principalmente porque no tengo nada claro como hacer esta rutina. Pero a ver si con un ejemplo se entiende un poco mejor que es lo que quiero.
Supongamos que tengo un tema con dos apartados, el primer apartado tiene 3 subaparatados y de éstos el segundo subapartado tiene uno más. Esto en la base de datos se recogería:

id............: 1, 2, 3, 4, 5, 6, 7
numsubs.: 2, 3, 0, 0, 1, 0, 0
idaparsup: 0, 1, 1, 2, 2, 2, 5

en donde he creado el subapartado 1.2.1 después de haber creado el 1.3

la ordenación jerárquica sería
tema: id=1
apartado 1: id=2
subapartado 1.1: id=4
subapartado 1.2: id=5
subapartado 1.2.1: id=7
subapartado 1.3: id=6
apartado 2: id=3

por lo que debería obtener un array 'ad' que de 1 a 7 tomara esos valores, de forma que en un bucle podría hacer la siguiente consulta a la base de datos

$sql="select * from tabla where id="$ad[i];
donde i tomaría los valores de 1 a 7

y esta sería la consulta para mostrar los valores de la tabla de datos.

El problema sigue siendo cómo hacer la rutina de ordenación

Saludos
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.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 20:43.