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 originalCREATE TABLE persona
(
idpersona serial NOT NULL,
...
nombres CHARACTER VARYING(50) NOT NULL DEFAULT 's/n'::CHARACTER VARYING,
apellidos CHARACTER VARYING(50) NOT NULL DEFAULT 's/a'::CHARACTER VARYING,
cedula INTEGER NOT NULL DEFAULT 0,
genero CHARACTER VARYING(3) NOT NULL DEFAULT 's/g'::CHARACTER VARYING,
telefono CHARACTER VARYING(14) NOT NULL DEFAULT 's/t'::CHARACTER VARYING,
telfemergencia CHARACTER VARYING(14) DEFAULT 's/t'::CHARACTER VARYING,
correoelectronico CHARACTER VARYING(50) DEFAULT 's/c'::CHARACTER VARYING,
...
)
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 originalCREATE TABLE resolucion
(
idresolucion serial NOT NULL,
nrofecharesolucion text DEFAULT 'sin resolucion'::text,
CONSTRAINT pkresolucion PRIMARY KEY (idresolucion)
)
otra guarda datos como el estudio realizado:
Código SQL:
Ver originalCREATE TABLE nucleo
(
idnucleo serial NOT NULL,
nucleo CHARACTER VARYING(40),
CONSTRAINT pknucleo PRIMARY KEY (idnucleo)
)
y
Código SQL:
Ver originalCREATE TABLE carrera
(
idcarrera serial NOT NULL,
carrera CHARACTER VARYING(50),
CONSTRAINT pkcarrera PRIMARY KEY (idcarrera)
)
Los datos de carrera se guardan exitosamente en
Código SQL:
Ver originalCREATE TABLE estudio
(
idestudio serial NOT NULL,
periodo CHARACTER VARYING(40) DEFAULT 'no estudia'::CHARACTER VARYING,
idnucleo INTEGER NOT NULL,
idcarrera INTEGER NOT NULL,
CONSTRAINT pkestudio PRIMARY KEY (idestudio),
CONSTRAINT fkestudiocarrera FOREIGN KEY (idcarrera)
REFERENCES carrera (idcarrera) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fkestudionucleo FOREIGN KEY (idnucleo)
REFERENCES nucleo (idnucleo) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
Pero quiero guardar los datos de idpersona, idresolucion e idestudio en otra tabla ya creada:
Código SQL:
Ver originalCREATE TABLE estudiouniversitario
(
idestudiopersona serial NOT NULL,
idpersona INTEGER,
idresolucion INTEGER NOT NULL,
idestudio INTEGER NOT NULL,
CONSTRAINT pkestudiopersona PRIMARY KEY (idestudiopersona),
CONSTRAINT fkestudioresolucion FOREIGN KEY (idresolucion)
REFERENCES resolucion (idresolucion) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fkuniversitario FOREIGN KEY (idestudio)
REFERENCES estudio (idestudio) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
Para luego poder hacer una consulta tipo:
Código SQL:
Ver originalSELECT estudiouniversitario.idestudiopersona, persona.idpersona, resolucion.nrofecharesolucion, nucleo.nucleo, carrera.carrera, estudio.periodo
FROM estudiouniversitario, persona, resolucion, nucleo, carrera, estudio
WHERE estudiouniversitario.idpersona = persona.idpersona
AND estudio.idnucleo = nucleo.idnucleo
AND estudio.idcarrera = carrera.idcarrera
;
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?