FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Problema logico
Antes que nada les voy a mostrar las tablas que tengo.
CREATE TABLE `jerarquia` ( `idhijo` int(11) NOT NULL default '0', `idpadre` int(11) NOT NULL default '0', `hijos` int(1) NOT NULL default '0', KEY `idpadre` (`idpadre`), KEY `idcat` (`idcat`) ) CREATE TABLE `nombres` ( `id` int(11) NOT NULL, `nombre` int(11) NOT NULL default '0', PRIMARY KEY `id` (`id`) ) Mediante esta tabla represento un arbol, donde idpadre es la identificadion del padre, que es un numero, idhijo es la identificacion numerica del hijo. En la tabla nombres tengo los nombres de los integrantes del arbol. Vamos a dar un ejemplo, digamos que Carlos, es papa de Alberto, que es papa de Juan. Esto reflejado en la base seria; tabla nombres; (1,'Carlos'), (2,'Alberto'), (3,'Juan'); tabla jerarquia; (1,0,1), (2,1,1), (3,2,0); Partiendo del id de alguien quiero obtener su arbol genealogico, de la forma id,nombre. Por ejemplo, me dan la id = 2 entonces tendria que obtener; (1,'Carlos') (2,'Alberto') Y todo esto haciendo una sola consulta. Alguna sugerencia o idea? |
#2
|
|||
|
|||
mmmmmmmmm con una sentencia:
SELECT DISTINCT(P.NOMBRE) ,A.NOMBRE,H.NOMBRE FROM NOMBRES A LEFT JOIN JERARQUIA J_HIJO ON (A.ID=J_HIJO.IDHIJO) LEFT JOIN JERARQUIA J_PADRE ON (J_PADRE.IDPADRE=A.ID) LEFT JOIN NOMBRES H ON (J_HIJO.IDPADRE=H.ID) LEFT JOIN NOMBRES P ON (J_PADRE.IDHIJO=P.ID) WHERE A.ID=2 así funciona (aunque repite el nombre del padre si algún registro tiene varios hijos). probablemente con un SP sería mas óptimo |
#3
|
|||
|
|||
Hola Gabriel, muchas gracias por responderme tan rapidoamente!!! he posteado la misma pregunta en algunos otros foros hace algun tiempo y nadie contesto.
Por cierto, que es un SP? Saludos |
#4
|
||||
|
||||
Store Procedure
__________________
...Yo naci en esta ribera del arauca vibr@d0r Soy hermano de la espuma, de la garza, de la rosa y del sol... Viva Venezuela |
#5
|
|||
|
|||
Mas dudas
Visto y considerando la respuesta mas que satisfactoria del ejemplo anterior, voy a atreverme a pedir ayuda nuevamente, pero con un caso mas definido.
Voy primero a describir el problema. Digames que tengo una tabla llamada `Categorias`, y en ella hay dos campos, uno llamado `id`, que es de tipo int. Y otro llamado nombre que es un varchar. Un ejemplo podria ser; id,nombre 1,'Autos' 2,'Audi' 3,'Tuneado' 4,'0 Kilometro' 5,'Porsche' 6,'Motos' 7,'Honda' Y tengo otra tabla, que relaciona estas categorias entre si, llamada `jerarquia`, que tiene un `id`, que es un int. Tiene un campo llamado `idcat` que es el numero que hace referencia a la tabla `Categorias`, otro campo llamado `idpadre` que tambien hacer referencia a la tabla `Categorias` y nos dice quien seria el padre de `idcat` (`idpadre` es 0 si no tiene padre, es decir es una categoria principal), y un ultimo campo que es llamado `hijos`, que dice si la categoria `idcat` tiene algun hijo. Al ejemplo anterior le corresponderian los siguientes valores; id,idcat,idpadre,hijos NULL,1,0,1 NULL,2,1,1 NULL,3,2,0 NULL,4,2,0 NULL,5,1,0 NULL,6,0,1 NULL,7,6,0 Por ultimo, tengo la tabla `productos`, que contiene un campo llamado `id`, un campo `nombre`, y por ultimo un campo llamado `cat`, que hace referencia a la tabla `Categorias`.`id`, cabe aclarar que siempre se va a referir a una categoria que no tenga hijos. Un ejemplo seria; id,nombre,cat NULL,'Posche 911',5 NULL,'Audi c4 verde',4 NULL,'Audi Gris modelo 82',3 NULL,'Moto 0km',7 Ahora vamos con el problema, obtener todos los productos que sean de una categoria que no tiene hijos es facil, basta con hacer un simple where `cat` = categoriaquequeremos. Pero que pasa si yo quisiera tener todos los que pertenecen a la categoria Autos por herencia de sus padres? Saludos, y perdon por ser tan extenso, pero este tipo de problemas suelen necesitar una buena descripcion. Gracias!!! |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
borrado logico | @-Soft | Conexión con bases de datos | 0 | 25-06-2004 14:32:22 |
Di-agnóstico gineco-lógico | santana | Humor | 1 | 13-06-2004 08:52:30 |
|