Foros del Web » Programando para Internet » ASP Clásico »

Se podría hacer esta sentencia?

Estas en el tema de Se podría hacer esta sentencia? en el foro de ASP Clásico en Foros del Web. Hola, antes que nada quiero decir que copie la estructura de la tabla de Speedy, además de la acotación de Neuron de agregarle un campo ...
  #1 (permalink)  
Antiguo 13/07/2005, 14:17
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 2 meses
Puntos: 9
Se podría hacer esta sentencia?

Hola, antes que nada quiero decir que copie la estructura de la tabla de Speedy, además de la acotación de Neuron de agregarle un campo Estado, para saber si esta activa o no esa categoría. Me refiero a la tabla del árbol de categorías que speedy posteó en el mensaje de "borrado en cascada...". Si a el no le molesta, y a Neuron tampoco, entonces trataré de mantener esta estructura, ya que fue la que más me convenció para lograr el árbol.
El problema me surge para hacer una sola sentencia SQL que me extraiga todas las sub categorias ( y a su vez, las sub categorias de estas) de una de las categorias principales. Es decir, tengo por ejemplo DEPORTES (categoria principal), luego deportes tiene sus hijos (Fúbtol, Basket, Rugby, Ciclismo) y a su vez, cada uno de estos hijos, tiene otros hijos (Accesorios, equipamiento, etc). Se puede hacer con una sola sentencia SQL que me muestre los hijos y sub hijos (si los tuviere) de la categoría principal que selecciono?. Intenté con esta sentencia:

"SELECT CAT_DESCRIPCION, CAT_IDMADRE, CAT_ID FROM CAT_CATEGORIAS CAT WHERE " & _
"CAT.CAT_IDMADRE = CAT.CAT_ID OR CAT.CAT_IDMADRE = 5"

Lo único que logro con esa sentencia es que me traiga los hijos de la categoria principal (en este caso CAT_IDMADRE = 5), pero no logro que me traiga los hijos de estos hijos.

La estructura de la tabla es esta:

Código:
 CAT_ID   CAT_DESCRIPCION     CAT_IDMADRE    
     1        Deportes                       0                  
     2        Electrónica                    0                         
     3        Libros                           0                    
     4        Salud                            0                    
     5        Para el hogar                  0                    
     6        Fúbtol                           1                    
     7        Rugby                           1                    
     8        Basket                          1                   
     9        Ciclismo                        1                    
    10       Equipamiento                 6                   ....
    11       Indumentaria                  6
    12       Camisetas                      6
    13       Audio y Video                 2
    14       Reproductores               13
    15       CD Players                    13
Como lo podría lograr?.
Muchas gracias por su ayuda de manera anticipada.
Saludos!.
Suerte!.
__________________
Add, never Remove
  #2 (permalink)  
Antiguo 13/07/2005, 14:21
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Seguramente si, pero por el contenido de la tabla de ejemplo, no creo que sea una sola tabla, creo yo que de ahí se despenden otras. Habrá que dedicarle un ratillo a anilizar la información y modelar la BD.
  #3 (permalink)  
Antiguo 13/07/2005, 14:27
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Pero que es lo que necesitas hacer?
Quieres crear una estructura de arbol???
Si es asi, ya hay varios "workarounds":

1. El viejo post con la sub recursiva que me dio AZ
2. El algoritmo de Neuron, implementando response.write y separadores(aunque es Alfa )


Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #4 (permalink)  
Antiguo 13/07/2005, 14:28
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Fijate este mensaje:
http://www.forosdelweb.com/showthrea...padre%20nietos
__________________
...___...
  #5 (permalink)  
Antiguo 13/07/2005, 14:34
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Y nomas nunca contó como estuvo el show, jejeje, seguro todavía esta con eso.
  #6 (permalink)  
Antiguo 13/07/2005, 14:37
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Hehehe, cierto!
__________________
...___...
  #7 (permalink)  
Antiguo 13/07/2005, 14:37
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
sabia que alguien saldria con eso, de hecho le conteste por MP a AZ el dia siguiente y le di el link, pero ahora cheque el link y ya no esta al aire era para un administrador de categorias que estaba haciendo pero nunca termine! Fue justo antes de mi utlima mudanza a L.A...

Creo que lo tengo por ahi en mi Lap Top empolvada, lo buscare, si lo encuentro prometo compartirlo ya que tenia un par de cosas interesantes.

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #8 (permalink)  
Antiguo 13/07/2005, 15:22
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 2 meses
Puntos: 9
Excelente!. Si bien es un procedimiento recursivo, y yo buscaba seguramente algo imposible, que era lograrlo a través de una sentencia SQL única, esto cumple con lo que andaba buscando en definitiva. Muchas gracias por compartirlo. Ahora me pregunto, habrá alguna manera de solucionar esa deficiencia (para mi gusto), de tener que conectarse cada vez que se ejecuta el procedimiento a la base de datos?.
Saludos, y gracias nuevamente por su ayuda.
Suerte!.
__________________
Add, never Remove
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 22:56.