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

UPDATE con INNER JOIN

Estas en el tema de UPDATE con INNER JOIN en el foro de Bases de Datos General en Foros del Web. Hola tengo un problema haciendo un update con inner join para lo siguiente Tengo 2 tablas Categorias y subCategorias, en subCategorias guardo el precio_costo de ...
  #1 (permalink)  
Antiguo 15/07/2010, 11:16
 
Fecha de Ingreso: julio-2010
Mensajes: 15
Antigüedad: 14 años, 4 meses
Puntos: 0
UPDATE con INNER JOIN

Hola tengo un problema haciendo un update con inner join para lo siguiente

Tengo 2 tablas Categorias y subCategorias, en subCategorias guardo el precio_costo de un producto por cada subproducto distinto, lo que quiero hacer es un UPdate para que el precio_costo que tengo en la tabla categoria sea la suma de las subcategorias de una misma categoria.

TABLA CATEGORIA

Id | Descripcion | Precio_Costo
-----------------------------------------------
1 | Chicle | Xa
2 | Agua | Xb
3 | paleta | Xc

TABLA SUBCATEGORIA

Id | Categoria | SubCategorias | Descripcion | Precio_Costo
-------------------------------------------------------------------------------------
1 | 1 | 1 | Menta | 33.50
1 | 1 | 2 | Canela | 30.20
1 | 1 | 3 | Mora | 32.60
1 | 2 | 1 | Naranja | 12.50
1 | 2 | 2 | Sandia | 12.20
1 | 3 | 1 | Jamaica | 8.60

Entonces quiero actualizar la tabla Categorias a lo siguiente
Xa va a ser la suma del precio_costo de la categoria 1

categoria 1 = Menta + canela +mora
Xa = 33.50 +30.20+32.60 = 96.3

categoria 2 = naranja+sandia
Xb = 12.50+ 12.20 = 24.7

categoria 3 = Jamaica
Xc = 8.6

intente algo como esto pero me marca error

UPDATE Categorias
SET Categorias.Costo_Inventario=SUM(Sub_Categorias.Cos to_Inventario)
FROM Categorias INNER JOIN
Sub_Categorias ON Categorias.Id = Sub_Categorias.Categorias
GROUP BY Categoria

Alguien me podria ayudar Porfa
  #2 (permalink)  
Antiguo 15/07/2010, 11:22
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 15 años, 3 meses
Puntos: 150
Respuesta: UPDATE con INNER JOIN

Prueba con esto y me dices (he utilizado los nombres de campos que indicaste al inicio, no luego en tu consulta):

UPDATE Categorias
SET Categorias.Costo_Inventario=(select SUM(Sub_Categorias.Precio_Costo) from Sub_Categorias where Sub_Categorias.Categoria=Categorias.Id)
  #3 (permalink)  
Antiguo 15/07/2010, 11:33
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: UPDATE con INNER JOIN

Código MySQL:
Ver original
  1. UPDATE Categorias C
  2.     INNER JOIN
  3.     (SELECT SUM(Cos to_Inventario) suma, Categorias  
  4.     FROM Sub_Categorias  
  5.     GROUP BY Categorias) CA  ON C.Id = CA.Categorias
  6. SET Categorias.Costo_Inventario= CA.suma;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 15/07/2010, 11:38
 
Fecha de Ingreso: julio-2010
Mensajes: 15
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: UPDATE con INNER JOIN

me marca un error ACCESS me dice Operation must use an updateable query estoy tratando de buscar por que el error pero no se porque pasa esto

segun esto encontre que queries que incluyen funciones como MAX, SUM, etc no son actualizables

no me funciono ninguna de las 2 soluciones. Vi en un lugar que decia que usando una tabla temporal si funciona alguien me podria decir como seria?

Última edición por manchukuo; 15/07/2010 a las 12:37
  #5 (permalink)  
Antiguo 15/07/2010, 12:57
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: UPDATE con INNER JOIN

No habías mencionado que fuese Access. Es un manejador de tablas limitado en sus recursos de SQL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 15/07/2010, 13:27
 
Fecha de Ingreso: julio-2010
Mensajes: 15
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: UPDATE con INNER JOIN

Si se me paso estoy usando ACCESS. Abra forma de hacerlo funcionar con lo de la tabla temporal ?

Parece que la funcion DSum de access me puede servir pero no puedo hacerla funcionar para lo que necesito alguien me podria orientar??

Última edición por manchukuo; 15/07/2010 a las 16:11

Etiquetas: join, update
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:16.