Discussion:
Haciendo UPDATE desde un SELECT entre 2 tablas
Fevis Koste
2008-01-08 15:55:01 UTC
Permalink
Saludos listas.
Estoy probando un UPDATE en una tabla que resulta de un SELECT de otra tabla
y me da este mensaje de error
----------------------------------
ERROR: more than one row returned by a subquery used as an expression

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

ERROR: more than one row returned by a subquery used as an expression
SQL state: 21000
-----------------------------------------

Anexo el query que mando a ejecutar:
UPDATE t_prueba_productos SET f_prueba =
(SELECT f_costo_reposicion FROM t_productos_sd
WHERE t_productos_ssd.f_referencia = t_prueba_productos.f_referencia);
Ramón Alberto Bruening González
2008-01-08 16:03:54 UTC
Permalink
El error que te aparece te indica que tu sub_consulta te devuelve mas de una fila, y deberias examinar tu sub_consulta para que te devuelta una fila a la vez para actualizar.
Anexo el query que mando a ejecutar: UPDATE t_prueba_productos SET f_prueba = (SELECT f_costo_reposicion FROM t_productos_sd WHERE t_productos_ssd.f_referencia = t_prueba_productos.f_referencia);
_________________________________________________________________
Explore the seven wonders of the world
http://search.msn.com/results.aspx?q=7+wonders+world&mkt=en-US&form=QBRE
Fevis Koste
2008-01-08 17:52:18 UTC
Permalink
Gracias Ramón, De eso me di cuenta desde el principio Ramón del mensaje,
pero antes de todo hice las pruebas de correr el subquery por separado y me
funciona a la perfección, por hice la pregunta a la lista para ver si los
más avanzados en la materia ven algo que no veo yo.

# SELECT f_costo_reposicion FROM t_productos_sd
WHERE t_productos_sd.f_referencia = t_prueba_productos.f_referencia;
Post by Ramón Alberto Bruening González
El error que te aparece te indica que tu sub_consulta te devuelve mas de
una fila, y deberias examinar tu sub_consulta para que te devuelta una fila
a la vez para actualizar.
UPDATE t_prueba_productos SET f_prueba =
(SELECT f_costo_reposicion FROM t_productos_sd
WHERE t_productos_ssd.f_referencia =
t_prueba_productos.f_referencia);
------------------------------
Explore the seven wonders of the world Learn more!<http://search.msn.com/results.aspx?q=7+wonders+world&mkt=en-US&form=QBRE>
Alvaro Herrera
2008-01-08 18:06:02 UTC
Permalink
Post by Fevis Koste
Saludos listas.
Estoy probando un UPDATE en una tabla que resulta de un SELECT de otra tabla
y me da este mensaje de error
----------------------------------
ERROR: more than one row returned by a subquery used as an expression
********** Error **********
ERROR: more than one row returned by a subquery used as an expression
SQL state: 21000
-----------------------------------------
UPDATE t_prueba_productos SET f_prueba =
(SELECT f_costo_reposicion FROM t_productos_sd
WHERE t_productos_ssd.f_referencia = t_prueba_productos.f_referencia);
Hmm, y por que no usas el FROM directamente en el update en vez de hacer
un subselect?

Creo que sería así:

update t_prueba_productos
set f_prueba = t_productos_sd.f_costo_reposicion
from t_productos_sd
where t_productos_sd.f_referencia = t_prueba_productos.f_referencia;

Claro que me confunde eso de que tengas t_productos_sd y
t_productos_ssd, quizás está mal mi plantamiento.
--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support
--
TIP 10: no uses HTML en tu pregunta, seguro que quien responda no podrá leerlo
Fevis Koste
2008-01-08 19:53:40 UTC
Permalink
Gracias a todos, en la propuesta de Alvaro y de Juan es como debe ser..
Post by Fevis Koste
Post by Fevis Koste
Saludos listas.
Estoy probando un UPDATE en una tabla que resulta de un SELECT de otra
tabla y me da este mensaje de error
----------------------------------
ERROR: more than one row returned by a subquery used as an expression
UPDATE t_prueba_productos SET f_prueba =
(SELECT f_costo_reposicion FROM t_productos_sd
WHERE t_productos_ssd.f_referencia =
t_prueba_productos.f_referencia);
UPDATE t_prueba_productos
SET f_prueba = t_productos_sd.f_costo_reposicion
FROM t_productos_sd
WHERE t_productos_sd.f_referencia = t_prueba_productos.f_referencia
--
Juan Martinez G. Mac Iver # 370
Departamento de Informatica 4997900 - 4997934
Universidad Miguel de Cervantes Santiago - Chile
Loading Image...
Loading...