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

Update SQL desde otra tabla

Estas en el tema de Update SQL desde otra tabla en el foro de Bases de Datos General en Foros del Web. Necesito actualizar los precios de venta de mis ariticulos(pventa) con el mayor precio de cada articulo de la tabla suministros(precio), esto tengo que hacerlo con ...
  #1 (permalink)  
Antiguo 27/07/2008, 09:25
 
Fecha de Ingreso: marzo-2004
Ubicación: Pc
Mensajes: 11
Antigüedad: 20 años, 8 meses
Puntos: 0
Update SQL desde otra tabla

Necesito actualizar los precios de venta de mis ariticulos(pventa) con el mayor precio de cada articulo de la tabla suministros(precio), esto tengo que hacerlo con una solo consulta.
Gracias

Tabla Articulos
cod_art pventa
a1 0
a2 0
a3 0
a4 0
a5 0
a6 0
erlo


Tabla Suministro
cod_articulo precio
a1 1000
a1 100
a1 200
a1 300
a2 800
a2 400
a3 50
a3 70
a4 20
a4 10
a5 400
a5 50
a6 60
  #2 (permalink)  
Antiguo 27/07/2008, 11:04
 
Fecha de Ingreso: julio-2008
Ubicación: Hermosillo, Sonora
Mensajes: 95
Antigüedad: 16 años, 4 meses
Puntos: 3
De acuerdo Respuesta: Update SQL desde otra tabla

Que tal... si tu motor acepta subconsultas, puedes hacer algo parecido a esto:

update x
set x.precio =
(select max(p.precio) from tabla2 p where p.codarticulo = t.codarticulo)
from tabla1 x


Espero te sirva
  #3 (permalink)  
Antiguo 27/07/2008, 11:13
 
Fecha de Ingreso: marzo-2004
Ubicación: Pc
Mensajes: 11
Antigüedad: 20 años, 8 meses
Puntos: 0
Respuesta: Update SQL desde otra tabla

Gracias por la respuesta pero no me resulto.
Esto es lo que yo he realizado.

Mayor precio de cada articulo de la tabla suministros

select max(precio) from suministros group by cod_articulo

Tomando ese resultado quiero actualizar mi pventa en articulos

update a
set a.pventa = (select max(pprecio) from suministros group by cod_articulo)
from articulos a, suministros b
where a.cod_art = b.cod_articulo

este es mi resultado
>[Error] Script lines: 1-4 --------------------------
[Oracle][ODBC Oracle Driver][Oracle OCI]ORA-00933: SQL command not properly ended.
  #4 (permalink)  
Antiguo 28/07/2008, 08:58
 
Fecha de Ingreso: julio-2008
Ubicación: Hermosillo, Sonora
Mensajes: 95
Antigüedad: 16 años, 4 meses
Puntos: 3
Información Respuesta: Update SQL desde otra tabla

Pues mira, he hecho todo el script para verificar que funcione y en efecto, funciona
Aquí te pongo los resultados de la tabla "t_articulos" antes de actualizar

codarticulo precio
----------- ---------------------------------------
a1 0.00
a2 0.00
a3 0.00
a4 0.00
a5 0.00
a6 0.00

Ahora la misma tabla, pero despues del update
codarticulo precio
----------- ---------------------------------------
a1 1000.00
a2 800.00
a3 70.00
a4 20.00
a5 400.00
a6 60.00


Y por ultimo, pues el script:

'------------------------------------------------
drop table t_articulos
drop table t_suministro
go

create table t_articulos
(
codarticulo varchar(5),
precio decimal(12,2)
)

create table t_suministro
(
codarticulo varchar(5),
precio decimal(12,2)
)
go


insert into t_articulos (codarticulo, precio)
values ('a1', 0)
insert into t_articulos (codarticulo, precio)
values ('a2', 0)
insert into t_articulos (codarticulo, precio)
values ('a3', 0)
insert into t_articulos (codarticulo, precio)
values ('a4', 0)
insert into t_articulos (codarticulo, precio)
values ('a5', 0)
insert into t_articulos (codarticulo, precio)
values ('a6', 0)
go

insert into t_suministro (codarticulo, precio)
values ('a1', 1000)
insert into t_suministro (codarticulo, precio)
values ('a1', 100)
insert into t_suministro (codarticulo, precio)
values ('a1', 200)
insert into t_suministro (codarticulo, precio)
values ('a1', 300)
insert into t_suministro (codarticulo, precio)
values ('a2', 800)
insert into t_suministro (codarticulo, precio)
values ('a2', 400)
insert into t_suministro (codarticulo, precio)
values ('a3', 50)
insert into t_suministro (codarticulo, precio)
values ('a3', 70)
insert into t_suministro (codarticulo, precio)
values ('a4', 20)
insert into t_suministro (codarticulo, precio)
values ('a4', 10)
insert into t_suministro (codarticulo, precio)
values ('a5', 400)
insert into t_suministro (codarticulo, precio)
values ('a5', 50)
insert into t_suministro (codarticulo, precio)
values ('a6', 60)
go

select * from t_articulos
go

update x
set x.precio = (select max(t.precio) from t_suministro t where t.codarticulo = x.codarticulo group by t.codarticulo)
from t_articulos x
go

select * from t_articulos
go
-----------------------------------------------'

Veo que estas corriendo sobre Oracle y pues si acepta subconsultas, quiza tengas que configurar algo o al parecer lo que tienes mal son los alias que no estan definidos en la subconsulta.


Salu2...
  #5 (permalink)  
Antiguo 28/07/2008, 09:24
 
Fecha de Ingreso: marzo-2004
Ubicación: Pc
Mensajes: 11
Antigüedad: 20 años, 8 meses
Puntos: 0
Respuesta: Update SQL desde otra tabla

Estoy trabajando con Oracle 7 y me funciono el UPDATE, pero de esta manera

update t_articulos
set t_articulos.precio = (select max(t_suministro.precio) from t_suministro where t_suministro.codarticulo = t_articulos.codarticulo group by t_suministro.codarticulo)

En resumen, no utilize alias y me funciono, creo que debe ser un problema del oracle 7
Muchas gracias jvillamil por la orientacion, despues de un dia de pruebas por fin resulto.

saludos
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 14:26.