Sucede que tengo básicamente 3 tablas, las cuales son:
Código SQL:
Ver original
CREATE TABLE `padre` ( `idpadre` INT(255) NOT NULL AUTO_INCREMENT, `padre` text COLLATE latin1_spanish_ci NOT NULL, `pesoPadre` VARCHAR(45) COLLATE latin1_spanish_ci NOT NULL, PRIMARY KEY (`idpadre`) ) CREATE TABLE `hijo` ( `idhijo` INT(255) NOT NULL AUTO_INCREMENT, `idpadre` INT(255) NOT NULL, `hijo` text COLLATE latin1_spanish_ci NOT NULL, `pesoHijo` VARCHAR(45) COLLATE latin1_spanish_ci NOT NULL, PRIMARY KEY (`idhijo`) ) CREATE TABLE `nieto` ( `idnieto` INT(255) NOT NULL AUTO_INCREMENT, `idhijo` INT(255) NOT NULL, `nieto` text COLLATE latin1_spanish_ci NOT NULL, `pesoNieto` VARCHAR(45) COLLATE latin1_spanish_ci NOT NULL, PRIMARY KEY (`idnieto`) )
El padre es un servicio, el hijo un sub-servicio y el nieto un sub-sub-servicio. Ahora lo que me complica:
Imaginemos que los padres son A, B, C y D. Cada uno cuenta con su 100 en el campo pesoPadre. Pero a su vez existen A.1, A.2, A.3 que son hijos del padre A. Cada uno de estos tres hijos tiene un 33.33 como pesoHijo que hacen el 100 del padre A. Sin embargo existen un nivel mas aún. Que A1 tiene como nieto a A.1.a, A.1.b, A.1.c y A.1.d. Cada uno de estos cuatro nietos tiene un 25.00 como pesoNieto que hacen el 100 del hijo.
Entonces lo que quiero lograr hacer es que la cosa sea modular al momento de agregar un registro por ejemplo en la tabla nieto. Me explico. Si teníamos A.1.a, A.1.b, A.1.c, A.1.d y ahora quiero agregar otro registro que en este caso sería A.1.e el valor de sus campos pesoNieto ya no sería 25.00, sino 20.00 (porque 100/5 da 20).
La consulta cuando agrego un registro nuevo en la tabla nieto por ejemplo sería así:
Código MySQL:
Ver original
Código MySQL:
Y no hay problema en agregar el dato que devuelve esa consulta al campo pesoNieto en la tabla nieto. Mi problema es actualizar los otros valores pesoNieto de las distintas filas.Ver original
Había pensado en hacerlo con trigger tomando en cuenta que mientras mas bajo nivel mejor, pero no me manejo para nada con los trigger.
Espero que puedan ayudarme y se haya entendido mi problema.