Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/12/2012, 12:29
tadie
 
Fecha de Ingreso: diciembre-2012
Mensajes: 4
Antigüedad: 11 años, 4 meses
Puntos: 0
Actualizar los campos de una tabla luego de insertar un registro en la misma

Hola gente, soy nuevo en el foro pero seguidor hace años. Tengo una duda; espero que puedan ayudarme.

Sucede que tengo básicamente 3 tablas, las cuales son:

Código SQL:
Ver original
  1. CREATE TABLE `padre` (
  2.   `idpadre` INT(255) NOT NULL AUTO_INCREMENT,
  3.   `padre` text COLLATE latin1_spanish_ci NOT NULL,
  4.   `pesoPadre` VARCHAR(45) COLLATE latin1_spanish_ci NOT NULL,
  5.   PRIMARY KEY  (`idpadre`)
  6. )
  7.  
  8. CREATE TABLE `hijo` (
  9.   `idhijo` INT(255) NOT NULL AUTO_INCREMENT,
  10.   `idpadre` INT(255) NOT NULL,
  11.   `hijo` text COLLATE latin1_spanish_ci NOT NULL,
  12.   `pesoHijo` VARCHAR(45) COLLATE latin1_spanish_ci NOT NULL,
  13.   PRIMARY KEY  (`idhijo`)
  14. )
  15.  
  16. CREATE TABLE `nieto` (
  17.   `idnieto` INT(255) NOT NULL AUTO_INCREMENT,
  18.   `idhijo` INT(255) NOT NULL,
  19.   `nieto` text COLLATE latin1_spanish_ci NOT NULL,
  20.   `pesoNieto` VARCHAR(45) COLLATE latin1_spanish_ci NOT NULL,
  21.   PRIMARY KEY  (`idnieto`)
  22. )

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
  1. SELECT round((100/(count(*)+1)),2) FROM nieto;

Código MySQL:
Ver original
  1. INSERT INTO nieto (idhijo, nieto, pesoNieto) VALUES ('$idHijo[0]', '" . $_POST["nombre1"] . "', '$pesoNieto[0]');
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.

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.

Última edición por gnzsoloyo; 13/12/2012 a las 12:13 Razón: Las normas de los Foros de Base de atos indican que no se deben incluir códigos que no sean SQL.