Re: Problemas para realizar update

From: Paola Alejandra de Montserrat Cordero Bon <paola(dot)cordero(dot)b(at)gmail(dot)com>
To: Jaime Casanova <jaime(at)2ndquadrant(dot)com>
Cc: POSTGRES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Problemas para realizar update
Date: 2015-07-02 00:10:00
Message-ID: CAChXvRhvB8Ven4Rxjf7H86EmAhiE0-VyAiKPpSBXvedOUqxiSA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

estimados:

Gracias por el aporte de Jaime Casanova pude avanzar un poco, veras ahora
sólo estoy intentando hacerle un update a una sola variable. Esta es la
situación, son tres tablas, tabla 1, tabla 2 y tabla 3 en promedio cada
una tiene 3.500.000 de tuplas, comparten en común una variable llamada
mrun (clave primaria en todas). Tabla2 y tabla3 tienen las mismas columnas
y nombres de variables. Tabla1 tiene las variables de tabla2 con 6
variables adicionales más, siendo la que quiero hacerle el update una de
ellas.
La idea es que esta variable, a la que le quiero hacer el update, tome
valores 1 si tabla.mrun = tabla2.mrun y tabla2.mrun no existe en
tabla3.mrun o tome valores 0 si tabla1.mrun = tabla2.mrun y tabla2.mrun
existe en tabla3.mrun

Ahora bien,he probado con varias consultas, y actualmente estoy probando
con esta:

update tabla3 set variable=1 where exists (select tabla2.mrun, tabla3.mrun
from tabla2, tabla3 where tabla1.mrun = tabla2.mrun and
tabla2.mrun<>tabla3.mrun)

Pero después de cuatro horas de procesamiento (aún sin detenerse) entiendo
que algo no anda bien.

Por eso apelo a su experiencia porque necesito verificar que se este
haciendo bien y optimizar la consulta ...desde ya muchisimas gracias.....

El 29 de junio de 2015, 22:56, Jaime Casanova <jaime(at)2ndquadrant(dot)com>
escribió:

> 2015-06-29 17:58 GMT-05:00 Paola Alejandra de Montserrat Cordero Bon
> <paola(dot)cordero(dot)b(at)gmail(dot)com>:
> > Buenas noches comunidad, les pido ayuda sobre una operación de
> > actualización. Tengo dos tablas, tabla 1, tabla 2, tienen en común varias
> > variables, quedando fuera cuatro que estan en la segunda tabla (tabla
> 2).
> > Hice una tercera tabla, tabla 3, donde le cargue la información completa
> de
> > la tabla 1, quedando pendiente actualizar con las variables no comunes
> de la
> > tabla 2.
> >
> > Use los siguientes comandos:
> >
> > Para insertar los datos en común: insert into tabla_3 (variable1, ...
> > variable_n) select variable1, ... variable_n from tabla_1 TODO Bien
> acá...
> >
> > Para actualizar estos usando el siguiente comando: update tabla_3 set
> > (variable1, variable2, variable3, variable4) = (variable1, variable2,
> > variable3, variable4 from tabla_2 where tabla_2.variable1 =
> > tabla_3.variable1)
> >
>
> UPDATE tabla_3
> SET variable_1 = tabla_2.variable_1,
> variable_2 = tabla_2.variable_2,
> ...
> variable_n = tabla_2.variable_n
> FROM tabla_2
> WHERE tabla_2.variable_1 = tabla_3.variable_1;
>
>
> fijate en el FROM, aunque lo que quieres hacer debería ser lo
> correcto postgres aun no lo implementa y por eso existe la posibilidad
> *NO* estandar de usar la clausula FROM en el UPDATE.
>
> en la versión 9.5 me parece que se podrá hacer como se debería.
>
> --
> Jaime Casanova www.2ndQuadrant.com
> Professional PostgreSQL: Soporte 24x7 y capacitación
>

--
Paola Alejandra de Montserrat Cordero Bon

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Esneiker Enriquez Cabrera 2015-07-02 12:14:30 RE: duda
Previous Message Gilberto Castillo 2015-07-01 20:45:15 Re: duda