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

consulta recursiva a bd foros

Estas en el tema de consulta recursiva a bd foros en el foro de Bases de Datos General en Foros del Web. Hola, deseo hacer un foro, que me permita mostrar en forma de arbol las respuestas mostradas, Tengo la tabla principal, la de mensajes debera ser ...
  #1 (permalink)  
Antiguo 31/03/2005, 11:59
 
Fecha de Ingreso: enero-2005
Mensajes: 16
Antigüedad: 19 años, 3 meses
Puntos: 0
consulta recursiva a bd foros

Hola, deseo hacer un foro, que me permita mostrar en forma de arbol las respuestas mostradas,
Tengo la tabla principal, la de mensajes debera ser recursiva... o
sea, uno de los campos es el ID del ID de la misma tabla.

Por ejemplo:

IDMensaje Titulo Contenido ID_MensajeCitado

IDMensaje, es una relacion al ID de la misma tabla, en el caso de que
este valor sea 0, representa un inicio de hilo. hasta el infinito

Ejemplo:
Código HTML:
IDMensaje    Mensaje                             IDMensajeCitado
1              Como se hace....                         0
2              De esta manera..                         1
3              No, yo creo que...                        2
4              Yo tambien veo esta manera          1 
5              Re: de esta manera                      2
En este caso tendria algo como:

Código HTML:
    Como se hace...
         De esta manera
             No, yo creo que
             Re: De esta Manera
         Yo tambien veo de esta manera
Como ven, en la estructura de un arbol,
no se como hacer la busqueda recursiva en sql
o hay otra manera de llegar a ese resultado????

por favor espero una ayuda!!!!

Última edición por luanah40; 31/03/2005 a las 12:00 Razón: no se muestra la informacion con tabs
  #2 (permalink)  
Antiguo 31/03/2005, 12:43
Avatar de cableh  
Fecha de Ingreso: diciembre-2004
Mensajes: 54
Antigüedad: 19 años, 4 meses
Puntos: 0
A ver si me explico: puedes crearte en la tabla un campo de tipo varchar que sea OrdenArbol, y ¿cómo rellenarlo?, el primer mensaje de un hilo será:
10000000+idMensaje, si este mensaje tiene una respuesta: concatenaremos el OrdenArbol del padre con .10000000+IdMensaje y así sucesivamente, finalmente ordenamos la consulta por OrdenMensaje. Así en tu ejemplo quedaría:


IDMensaje Mensaje............. IDMensajeCitado OrdenArbol
1 ........... Como se hace..... 0 ................... 1001
2 ........... De esta manera... 1 ................... 1001.1002
3 ........... No, yo creo que... 2 ...................1001.1002.1003
4 ........... Yo tambien veo ... 1 .................. 1001.1004
5 ........... Re: de esta manera 2 ................. 1001.1002.1005

(Perdona el desorden pero no se manejar el editor muy bien)

En el ejemplo he concatenado con 1000 para hacerlo más corto pero tú elijes el tamaño (evidentemente 1000 es corto porque en cuanto tuvieras más de mil mensajes ya no valdría por eso hay que poner un número grande).

Como ves si hicieras:
select * from mensajes where idTema = @idTema order by OrdenArbol
te devolvería:
IdMensaje
1
2
3
5
4

Es una idea, espero haberme explicado y que te sirva.
Salu2.
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




La zona horaria es GMT -6. Ahora son las 09:10.