[Pgsql-ayuda] update exists

Xavi Puig personal@xavihost.com
Sat, 25 Oct 2003 16:46:11 +0100


No se porque sospechas tanto y de que!!!

Lo vuelvo a preguntar y por ultima vez, a ver si alguien me encamina para encontrar la solucion al problema que tengo.

Supongamos que tengo una tabla de 300.00 registros.
Por otro lado he programado un interface web donde el usuario puede realizar una consulta sobre la tabla y "anidar" esta sobre otra con el fin de ir acotando los resultados. El resultado es una query tipo 

select * from tab1 from (select * from tab1 where col20=false) as alias1  where col10=25 )as alias2  where col5='pepe'

Ahora quiero actualizar todo resultado de una sola vez.

He probado: 
update tab1 set col2=3 where exists (.....la de antes, creada dinamicamente por el usr.... )
Esto no solo es interminable sino que desestructura toda la bbdd y luego una consulta de 1 seg tarda 10 min.

La pregunta es, esto es posible o tengo que primero crear una tabla temporal con el resultado de la query del usr, luego actualizar sobre la temporal y luego actualizar la general con esta temporal (lo que yo llamo incrustar)

Sospecho que el exists solo funciona bien con una sola query tipo (select * from tab1 where col25=3) pero no anidada(subconsultas)
 
Si es eso cierto, como creeis que puedo hacerlo.

Gracias.


>On Sat, Oct 25, 2003 at 01:48:57PM +0100, Xavi Puig wrote:
>> Lo pregunto de otra manera, ya que no puedo cambiar la subquery.
>
>No se por que tu situacion me parece tremendamente sospechosa.
>
>> dada una tabla temporal(resultado de la subquery donde luego la
>> actualizo al gusto), cual es la mejor manera de incrustarla en otra,
>> teniendo en cuenta que la general posee indices y claves primarias?
>
>Huh... que significa "incrustar una tabla en otra"?
>
>-- 
>Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
>"La espina, desde que nace, ya pincha" (Proverbio africano)