Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/07/2013, 08:42
Avatar de kana_kanji2000
kana_kanji2000
 
Fecha de Ingreso: mayo-2013
Ubicación: Caracas
Mensajes: 15
Antigüedad: 11 años
Puntos: 0
Pregunta Agregar datos en una tabla a partir de otras tablas

Tengo esta duda y quisiera resolverla lo más pronto posible, pero no sé cómo preguntarlo a Google. Tengo una serie de tablas hechas en PostgreSQL, y quiero pasar los datos de 3 tablas a una que las une. Me explico: el registro hecho en PHP guarda datos personales como:
Código SQL:
Ver original
  1. CREATE TABLE persona
  2. (
  3.   idpersona serial NOT NULL,
  4.   ...
  5.   nombres CHARACTER VARYING(50) NOT NULL DEFAULT 's/n'::CHARACTER VARYING,
  6.   apellidos CHARACTER VARYING(50) NOT NULL DEFAULT 's/a'::CHARACTER VARYING,
  7.   cedula INTEGER NOT NULL DEFAULT 0,
  8.   genero CHARACTER VARYING(3) NOT NULL DEFAULT 's/g'::CHARACTER VARYING,
  9.   telefono CHARACTER VARYING(14) NOT NULL DEFAULT 's/t'::CHARACTER VARYING,
  10.   telfemergencia CHARACTER VARYING(14) DEFAULT 's/t'::CHARACTER VARYING,
  11.   correoelectronico CHARACTER VARYING(50) DEFAULT 's/c'::CHARACTER VARYING,
  12.   ...
  13. )

otra guarda datos militares como el componente, grado, categoría y especialidad (saltar esto), otra guarda información sobre la resolución:
Código SQL:
Ver original
  1. CREATE TABLE resolucion
  2. (
  3.   idresolucion serial NOT NULL,
  4.   nrofecharesolucion text DEFAULT 'sin resolucion'::text,
  5.   CONSTRAINT pkresolucion PRIMARY KEY (idresolucion)
  6. )

otra guarda datos como el estudio realizado:
Código SQL:
Ver original
  1. CREATE TABLE nucleo
  2. (
  3.   idnucleo serial NOT NULL,
  4.   nucleo CHARACTER VARYING(40),
  5.   CONSTRAINT pknucleo PRIMARY KEY (idnucleo)
  6. )
y
Código SQL:
Ver original
  1. CREATE TABLE carrera
  2. (
  3.   idcarrera serial NOT NULL,
  4.   carrera CHARACTER VARYING(50),
  5.   CONSTRAINT pkcarrera PRIMARY KEY (idcarrera)
  6. )

Los datos de carrera se guardan exitosamente en
Código SQL:
Ver original
  1. CREATE TABLE estudio
  2. (
  3.   idestudio serial NOT NULL,
  4.   periodo CHARACTER VARYING(40) DEFAULT 'no estudia'::CHARACTER VARYING,
  5.   idnucleo INTEGER NOT NULL,
  6.   idcarrera INTEGER NOT NULL,
  7.   CONSTRAINT pkestudio PRIMARY KEY (idestudio),
  8.   CONSTRAINT fkestudiocarrera FOREIGN KEY (idcarrera)
  9.       REFERENCES carrera (idcarrera) MATCH SIMPLE
  10.       ON UPDATE NO ACTION ON DELETE NO ACTION,
  11.   CONSTRAINT fkestudionucleo FOREIGN KEY (idnucleo)
  12.       REFERENCES nucleo (idnucleo) MATCH SIMPLE
  13.       ON UPDATE NO ACTION ON DELETE NO ACTION
  14. )

Pero quiero guardar los datos de idpersona, idresolucion e idestudio en otra tabla ya creada:
Código SQL:
Ver original
  1. CREATE TABLE estudiouniversitario
  2. (
  3.   idestudiopersona serial NOT NULL,
  4.   idpersona INTEGER,
  5.   idresolucion INTEGER NOT NULL,
  6.   idestudio INTEGER NOT NULL,
  7.   CONSTRAINT pkestudiopersona PRIMARY KEY (idestudiopersona),
  8.   CONSTRAINT fkestudioresolucion FOREIGN KEY (idresolucion)
  9.       REFERENCES resolucion (idresolucion) MATCH SIMPLE
  10.       ON UPDATE NO ACTION ON DELETE NO ACTION,
  11.   CONSTRAINT fkuniversitario FOREIGN KEY (idestudio)
  12.       REFERENCES estudio (idestudio) MATCH SIMPLE
  13.       ON UPDATE NO ACTION ON DELETE NO ACTION
  14. )

Para luego poder hacer una consulta tipo:
Código SQL:
Ver original
  1. SELECT estudiouniversitario.idestudiopersona, persona.idpersona, resolucion.nrofecharesolucion, nucleo.nucleo, carrera.carrera, estudio.periodo
  2. FROM estudiouniversitario, persona, resolucion, nucleo, carrera, estudio
  3. WHERE estudiouniversitario.idpersona = persona.idpersona
  4. AND estudio.idnucleo = nucleo.idnucleo
  5. AND estudio.idcarrera = carrera.idcarrera
  6. ;

Aún no sé qué genera esto, porque, los campos están vacíos Estoy que me doy golpes contra la pared... ¿Hay alguna web donde salga esta solución o quizás alguna alma caritativa que me ayude?