creo que mi mail puede estar fuera de lugar, pero la complejidad de un problema no deberia hacernos perder la forma de comunicarnos.
Ademas, la respuesta es casi trivial y creo que despues de 7 años de trabajar con pl vas a ser capaz de encontrarla...
saludos cordiales
Gabriel
Jose L escribió:
Hola gente
tengo que crear una vista, que reciba como parámetro el valor de un
"padre" y devuelva todos sus hijos (ahora se verá más claro...)
es para la estructura que os pongo abajo, estoy pensando cómo hacerlo
pero después de 7 años con el PL.. creo que ya me han reventado las
neuronas...
Parece muy fácil, pero no lo es tanto
--------------------- --------- --------- --------- --------- -
Imaginad que tenemos la tabla:
CREATE TABLE FAMILY
(PARENT VARCHAR2(10),
CHILD_LOW VARCHAR2(10),
CHILD_HIGH VARCHAR2(10)
);
INSERT INTO FAMILY (PARENT,CHILD_LOW,CHILD_ HIGH) VALUES ('01','01',' 01');
INSERT INTO FAMILY (PARENT,CHILD_LOW,CHILD_ HIGH) VALUES ('01','AA',' AN');
INSERT INTO FAMILY (PARENT,CHILD_LOW,CHILD_ HIGH) VALUES ('01','K0',' K50');
INSERT INTO FAMILY (PARENT,CHILD_LOW,CHILD_ HIGH) VALUES
('AA','100','199');
INSERT INTO FAMILY (PARENT,CHILD_LOW,CHILD_ HIGH) VALUES
('K2','500','600');
INSERT INTO FAMILY (PARENT,CHILD_LOW,CHILD_ HIGH) VALUES ('500','VV', 'VV');
INSERT INTO FAMILY (PARENT,CHILD_LOW,CHILD_ HIGH) VALUES ('02','02',' 02');
INSERT INTO FAMILY (PARENT,CHILD_LOW,CHILD_ HIGH) VALUES ('02','B0',' B9');
INSERT INTO FAMILY (PARENT,CHILD_LOW,CHILD_ HIGH) VALUES
('02','1000','2000');
INSERT INTO FAMILY (PARENT,CHILD_LOW,CHILD_ HIGH) VALUES
('1500','MA','MZ');
--------------------- --------- --------- --------- --------- -
Esto crea la estructura, en la que en cada registro, un "padre" tiene
un rango de valores inferior y superior (low y high) de sus hijos
--------------------
PARENT CHILD_LOW CHILD_HIGH
01 01 01
01 AA AN
01 K0 K50
AA 100 199
K2 500 600
500 VV VV
02 02 02
02 B0 B9
02 1000 2000
1500 MA MZ
--------------------- ---------
La idea es quepara un padre dadoa la vista... esta devuelva la
colección de sus hijos
por ejemplo, para '01' debería devolver:
AA AN
K0 K50
100 199
500 600
VV VV
para 'K2' debería devolver:
500 600
VV VV
Así simplemente.. teniendo en cuenta que el número de niveles puede
ser grande, no sólo 3 ó 4 como aquí..
Bueno, si se os ocurre.. agradezco que posteéis el código.
Gracias.
Un saludo,
Jose L
(011) 5236-0566 / (011) 5236-0567