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

ayuda con update

Estas en el tema de ayuda con update en el foro de Bases de Datos General en Foros del Web. hola a todossss tengo una pregunta es posible hacer un update y que el valor a insertar sea el resultado de una consulta? esto a ...
  #1 (permalink)  
Antiguo 27/08/2005, 12:37
Avatar de dieguicho  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires
Mensajes: 1.190
Antigüedad: 22 años, 5 meses
Puntos: 1
ayuda con update

hola a todossss
tengo una pregunta
es posible hacer un update y que el valor a insertar sea el resultado de una consulta?

esto a modo de ejemplo porque no me funciona

UPDATE productos SET visitas = (
SELECT sum(opcion) as suma
FROM detalle_visitas WHERE IDproducto = TODOS LOS PRODUCTOS
)

la idea es que haga una suma en la tabla detalle_visitas donde el IDproducto = x y luego de hacer esa suma actualice los registros poniendole en su columna visitas el resultado de la consulta a la tabla detalle_visitas

se entiende? o mejor actualizo uno por uno los registros? el problema es que son muchisimos!
mil gracias de antemano
__________________
On error no hago nada porque deje de fumar...
  #2 (permalink)  
Antiguo 27/08/2005, 15:39
Avatar de Mickel  
Fecha de Ingreso: mayo-2002
Ubicación: Lima, Peru
Mensajes: 4.619
Antigüedad: 22 años
Puntos: 7
Creo que deberia ser

UPDATE PRODUCTOS
SET VISITAS=SUM(OPCION)
FROM DETALLE_VISITAS
WHERE IDPRODUCTO=PRODUCTOS.IDPRODUCTO
__________________
No tengo firma ahora... :(
  #3 (permalink)  
Antiguo 28/08/2005, 16:50
Avatar de dieguicho  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires
Mensajes: 1.190
Antigüedad: 22 años, 5 meses
Puntos: 1
Me da este error

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'SUM(OPCION) FROM DETALLE_VISITAS'
__________________
On error no hago nada porque deje de fumar...
  #4 (permalink)  
Antiguo 29/08/2005, 09:24
Avatar de sir_joshua  
Fecha de Ingreso: diciembre-2004
Mensajes: 411
Antigüedad: 19 años, 4 meses
Puntos: 0
UPDATE productos SET visitas = (
SELECT sum(a.opcion)
FROM detalle_visitas a WHERE a.IDproducto = productos.IDproducto)
WHERE a.IDproducto = productos.IDproducto

la cuestion es ke si pones un subquery en un update, por el hecho de ke tienes el simbolo =, el subquery te tiene ke regresar un solo resultado... igual y podrias chekar tu subquery por separado.

salu2.
__________________
http://sir-joshua.hi5.com
Mex. Mex.
  #5 (permalink)  
Antiguo 29/08/2005, 11:20
Avatar de dieguicho  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires
Mensajes: 1.190
Antigüedad: 22 años, 5 meses
Puntos: 1
hice eso y ahora me da esste error
[Microsoft][ODBC Microsoft Access Driver] Operation must use an updateable query.
__________________
On error no hago nada porque deje de fumar...
  #6 (permalink)  
Antiguo 29/08/2005, 19:18
Avatar de Mickel  
Fecha de Ingreso: mayo-2002
Ubicación: Lima, Peru
Mensajes: 4.619
Antigüedad: 22 años
Puntos: 7
hmmm...

UPDATE PRODUCTOS
SET VISITAS=SUM(OPCION)
FROM DETALLE_VISITAS
WHERE IDPRODUCTO=PRODUCTOS.IDPRODUCTO
GROUP BY IDPRODUCTO ?
__________________
No tengo firma ahora... :(
  #7 (permalink)  
Antiguo 30/08/2005, 06:37
 
Fecha de Ingreso: junio-2002
Mensajes: 243
Antigüedad: 21 años, 10 meses
Puntos: 1
A ver si lo he entendido bien...

En la tabla detalle_visitas tienes varias filas donde aparecen 2 campos...

uno es el campo de opcion en el q debe haber una cantidad y otro es el campo id

luego tienes la tabla productos donde tienes un id del producto y el campo visitas...

encontes queires sumar todas las cantidades agrupandolas por id? osease suma todos los productos q tengan id=1 luego los q tengan id=2..etc...

y luego en la tabla visitas ir actualizando con las sumas q te ha devuelto el otro select no?

supongo q te refieres a sumas...pq quizas te confundes con contar el numero de filas q hay de cada producto en la tabla detalle_visitas...

Pues si todo esto es correcto voy a ver si puedo hacer la consulta...

A ver con la siguiente consulta actualizarias solo un producto...

encontes para actualizar todos...debes hacer un bucle..ya sea con un cursor dentro de un procedimiento...o por ejmplo si usas php pues con un while

UPDATE productos p
SET p.visitas = (
SELECT sum(d.opcion) as suma
FROM detalle_visitas d WHERE d.IDproducto = $id
)
WHERE p.IDproducto=$id

Creo q no hay otro modo ya q en el where no le puedes pasar mas de un id

Salu2.
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 07:11.