Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Update usando inner entre tablas

Estas en el tema de Update usando inner entre tablas en el foro de PostgreSQL en Foros del Web. Hola a todos, estoy tratando de actualizar una tabla con los datos de otra de la siguiente manera update c set d.fecha=c.fecha from cabecera c ...
  #1 (permalink)  
Antiguo 18/07/2009, 10:27
 
Fecha de Ingreso: septiembre-2008
Mensajes: 75
Antigüedad: 15 años, 7 meses
Puntos: 1
Update usando inner entre tablas

Hola a todos, estoy tratando de actualizar una tabla con los datos de otra de la siguiente manera

update c set d.fecha=c.fecha
from cabecera c inner join detalle d on c.codigo=d.codcab;

pero me sale el error:
ERROR: relation "c" does not exist

********** Error **********

ERROR: relation "c" does not exist
SQL state: 42P01

lo trate de hacer de la siguiente manera:

update cabecera c inner join detalle d on c.codigo=d.codcab
set d.fecha=c.fecha;

pero sale el error:

ERROR: syntax error at or near "inner"
LINEA 1: update cabecera c inner join detalle d on c.codigo=d.codcab
^

********** Error **********

ERROR: syntax error at or near "inner"
SQL state: 42601
Character: 15

una ayudita por favor
  #2 (permalink)  
Antiguo 18/07/2009, 11:13
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Update usando inner entre tablas

podrías poner la estructura de las tablas c, cabecera y detalles?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 18/07/2009, 11:18
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Update usando inner entre tablas

prueba esto:

Código sql:
Ver original
  1. UPDATE detalle d SET fecha=c.fecha FROM
  2. cabecera c WHERE d.codcab=c.codigo;

Creo que es lo que buscas.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Última edición por huesos52; 18/07/2009 a las 11:24
  #4 (permalink)  
Antiguo 18/07/2009, 11:20
 
Fecha de Ingreso: septiembre-2008
Mensajes: 75
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Update usando inner entre tablas

Alli esta lo solicitado

--Tabla cabecera
create table cabecera(
codigo character(2) primary key,
fecha date,
total real not null,
);

--Tabla detalle
create table detalle(
codcab character(2) not null,
codigo character(2) not null,
importe1 real not null,
importe2 real not null,
fecha date
);

update c set d.fecha=c.fecha
from cabecera c inner join detalle d on c.codigo=d.codcab;

gracias
  #5 (permalink)  
Antiguo 18/07/2009, 11:25
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Update usando inner entre tablas

ya probaste la consulta anterior?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #6 (permalink)  
Antiguo 18/07/2009, 11:32
 
Fecha de Ingreso: septiembre-2008
Mensajes: 75
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Update usando inner entre tablas

excelente huesos52 eso era lo q buscaba, en el caso de que sean mas de 2 tablas me imagino q sera algo asi:
UPDATE detalle d SET fecha=c.fecha FROM
cabecera c, tabla3 t WHERE d.codcab=c.codigo and d.codcab=t.codcab;

corrigeme si me equivoco, gracias
  #7 (permalink)  
Antiguo 18/07/2009, 11:35
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Update usando inner entre tablas

eso creo que funcionaría.
Lo importante, es tener presente que solo pueden actualizarse registros de la tabla "detalle" en este caso. Sin importar que despues del from existan 3,4 o n tablas declaradas.

Es una lastima que postgresql no soporte el update inner join, pero almenos cuenta con un mecanismo de rescate.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #8 (permalink)  
Antiguo 18/07/2009, 11:55
 
Fecha de Ingreso: septiembre-2008
Mensajes: 75
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Update usando inner entre tablas

a lo mejor en la 8.4 ya esta habria que revisar, estoy empezando en postgres pero esto no me desilusiona de la base gracias nuevamente
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:25.