PostgreSQL - UPDATE ENTRE DOS TABLAS

 
Vista:
sin imagen de perfil

UPDATE ENTRE DOS TABLAS

Publicado por Edson (2 intervenciones) el 27/09/2017 21:35:24
Necesito ayuda para insertar registros de una tabla a otra..
La idea es : por cada valor de T2.REDOR1 = T1.REDNRO se debe repetir los datos REDRP1 y REDRP2 desde T1 ahacia T2. Dejo una imagen para que se comprenda mejor.
1
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

UPDATE ENTRE DOS TABLAS

Publicado por YYanes (20 intervenciones) el 06/10/2017 16:11:25
Hola amigo:

Si lo que desea hacer es insertar en una tabla el resultado de la consulta a otra tabla lo que tiene que hacer es lo siguiente:

Insert into Tabla1(Col1, Col2)
Select ColA, ColB from Tabla2;

//Esto lo que hace es insertar en la Tabla1 el resultado de una subconsulta a Tabla2. Ojo: para ello las columnas Col1 y ColA, así como Col2 y ColB deben ser compatibles entre sí respectivamente.
//----------------------------------------------------------------------
Por otra parte, si lo que desea es Actualizar determinadas columnas en una tabla según los valores de otra tabla, lo que habría que hacer es lo siguiente:

update Tabla1 Set Col1 = (Select ColA from Tabla2 where Tabla1.Col3 = Tabla2.ColC)
where Tabla1.Col3 = Tabla2.ColC;

/*-- Esto lo que hace es actualizar los valores de Col1 en Tabla1 según los valores de ColA en Tabla2, pero en aquellos campos en donde se cumple que Tabla1.Col3 = Tabla2.ColC;
El detalle es que tiene que haber en este caso una columna que sea común para ambas tablas para relacionarlas a través de la misma, de lo contrario el resultado podría no ser el esperado. --*/

Espero haberle servido de algo.

Un GigaSaludo!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

UPDATE ENTRE DOS TABLAS

Publicado por YYanes (20 intervenciones) el 06/10/2017 16:17:58
Pruebe lo siguiente:

1
2
3
update T2 Set REDRP1 = (Select T1.REDRP1 from T1 where T2.REDOR1 = T1.REDNRO),
         REDRP2 = (Select T1.REDRP2 from T1 where T2.REDOR1 = T1.REDNRO)
where T2.REDOR1 = T1.REDNRO;

Un GigaSaludo!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

UPDATE ENTRE DOS TABLAS

Publicado por Edson (2 intervenciones) el 06/10/2017 22:17:33
Ok lo que hize fue;
alter table "T2" add FOREIGN KEY ("REDOR1")
REFERENCES "T1"("REDNRO");
para que esten relacionadas, pero al aplicar la consulta me sale
1
2
3
4
5
6
7
update "T2" Set "REDRP1" =
(Select "T1"."REDRP1" from "T1","T2"
where "T2"."REDOR1" = "T1"."REDNRO"),
"REDRP2" =
(Select "T1"."REDRP2" from "T1","T2"
where "T2"."REDOR1" = "T1"."REDNRO")
where "T2"."REDOR1" = "T1"."REDNRO";
ERROR: falta una entrada para la tabla «T1» en la cláusula FROM
LINE 7: where "T2"."REDOR1" = "T1"."REDNRO";
para arreglarlo hice este cambio:
1
2
3
4
5
6
7
8
update "T2" Set "REDRP1" =
(Select "T1"."REDRP1" from "T1","T2"
where "T2"."REDOR1" = "T1"."REDNRO"),
"REDRP2" =
(Select "T1"."REDRP2" from "T1","T2"
where "T2"."REDOR1" = "T1"."REDNRO")
from "T1"
where "T2"."REDOR1" = "T1"."REDNRO";
ahora me sale el error: una subconsulta utilizada como expresión retornó más de un registro.

Gracias por la ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar