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

No consigo actualizar campos en una tabla desde otra tabla

Estas en el tema de No consigo actualizar campos en una tabla desde otra tabla en el foro de Mysql en Foros del Web. Buenas a todos. Estoy intentando actualizar los datos en un campo de una tabla, cuando los datos no coinciden con otra tabla, sin embargo me ...
  #1 (permalink)  
Antiguo 23/04/2009, 06:23
Avatar de lone  
Fecha de Ingreso: abril-2009
Ubicación: Valencia
Mensajes: 8
Antigüedad: 15 años, 6 meses
Puntos: 0
No consigo actualizar campos en una tabla desde otra tabla

Buenas a todos.

Estoy intentando actualizar los datos en un campo de una tabla, cuando los datos no coinciden con otra tabla, sin embargo me devuelve errores del tipo "#1242 - Subquery returns more than 1 row" "la subconsulta devuelve más de una fila". Las tablas son:

p_mf_xref (tabla que quiero actualizar)
+ mf_category_id (campo que quiero actualizar)
+ manufacturer_id (campo que comparo y hace referencia al valor que quiero actualizar)

jos_vm_manufacturer (tabla donde se encuentran los datos a comparar)
+ mf_category_id (campo con el valor que se tiene que copiar a la otra tabla)
+ manufacturer_id (campo con el que comparo)

La acción es la siguiente p_mf_xref.manufacturer_id lo comparo con jos_vm_manufacturer.manufacturer_id cuando lo encuentra copia el valor de jos_vm_manufacturer.mf_category_id al campo p_mf_xref.mf_category_id.

He intentado utilizar el siguiente codigo (pero como hace 10 dias que empecé con Mysql no logro hacerlo correctamente)

UPDATE p_mf_xref
SET mf_category_id = (SELECT mf_category_id FROM jos_vm_manufacturer)
WHERE manufacturer_id IN (SELECT manufacturer_id FROM jos_vm_manufacturer)

Alguíen podría explicarme como se hace o que estoy haciendo mal. Gracias por adelantado.
  #2 (permalink)  
Antiguo 23/04/2009, 07:24
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: No consigo actualizar campos en una tabla desde otra tabla

Que tal lone

LOs errores se deben a que tratas de asignar una lista de valirs retornados a un campo.

Lo que tratas de hacer, lo puedes hacer con update inner join, por que al parecer las tablas estan relacionadas.

prueba con:

Código mysql:
Ver original
  1. UPDATE p_mf_xref,jos_vm_manufacturer
  2. set p_mf_xref.mf_category_id =
  3. jos_vm_manufacturer.mf_category_id
  4. where p_mf_xref.mf_category_id
  5. in(SELECT manufacturer_id FROM jos_vm_manufacturer)

Espero te sirva.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 23/04/2009, 07:37
Avatar de lone  
Fecha de Ingreso: abril-2009
Ubicación: Valencia
Mensajes: 8
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: No consigo actualizar campos en una tabla desde otra tabla

Muchas gracias por la ayuda Huesos52.

He introducido el codigo, y me dice que no se actualiza ningún dato, al parecer no detecta que los datos de p_mf_xref.mf_category_id son diferentes de los de jos_vm_manufacturer.mf_category_id. sin embargo los datos si que difieren.

Alguna idea de por que ocurre eso?
  #4 (permalink)  
Antiguo 23/04/2009, 07:41
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: No consigo actualizar campos en una tabla desde otra tabla

Cuentanos un poco mas de el contenido de las tablas que tienes.

Que valores tienes y que valores deseas actualizar.

Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 23/04/2009, 07:58
Avatar de lone  
Fecha de Ingreso: abril-2009
Ubicación: Valencia
Mensajes: 8
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: No consigo actualizar campos en una tabla desde otra tabla

Los valores son numericos y correponden a las claves de las categorias del fabricante y al fabricante. En la tabla p_mf_xref hay una columna más que corresponde a un producto que esta en otra tabla. Cuando a este producto se le asigna un fabricante el fabricante se escribe en la tabla junto al producto y lo que quiero es que tambien se escriba a que categoría pertenece el fabricante, para de esta manera poder mostrar la relación de productos segun la categoria. así mismo ya tengo productos y fabricantes asociados de anteriores entradas por lo que necesito que se actualice con los datos de categorías que antes no existían.

Espero haber aclarado la consulta y no haberla liado más ;-P
  #6 (permalink)  
Antiguo 23/04/2009, 08:11
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: No consigo actualizar campos en una tabla desde otra tabla

Cita:
para de esta manera poder mostrar la relación de productos segun la categoria. así mismo ya tengo productos y fabricantes asociados de anteriores entradas por lo que necesito que se actualice con los datos de categorías que antes no existían.
No te entendí casi nada

Puedes poner un ejemplo gráfico, con datos y estructura de las dos tablas y que te gustaría que cambiara?


jejeje... en serio quedé mas enredado que en tu primer post.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #7 (permalink)  
Antiguo 23/04/2009, 08:43
Avatar de lone  
Fecha de Ingreso: abril-2009
Ubicación: Valencia
Mensajes: 8
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: No consigo actualizar campos en una tabla desde otra tabla

Eso son las tablas donde está la información:
No puedo postear links directamente así que te lo pongo a falta del http : //

XXXXX/Casvi/BD/jos_vm_manufacturer_category.png
XXXXX/Casvi/BD/jos_vm_manufacturer.png
XXXXX/Casvi/BD/jos_vm_product.png
XXXXX/Casvi/BD/p_mf_xref.png

lo que pretendo es que p_mf_xref tenga el campo mf_category_id actualizado con la misma información que el campo mf_category_id de la tabla jos_vm_manufacturer.

Espero que lo deje un poco más claro

Última edición por lone; 23/04/2009 a las 16:51 Razón: servidor de las fotos eliminado
  #8 (permalink)  
Antiguo 23/04/2009, 09:00
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: No consigo actualizar campos en una tabla desde otra tabla

Asumo que manufacturer_id son los campos que están relacionados entre las dos tablas.

Prueba con esto:

Código mysql:
Ver original
  1. update p_mf_xref pmx inner join jos_vm_manufacturer jvm on
  2. pmx.manufacturer_id = jvm.manufactured_id set
  3. pmx.mf_category_id = jvm.mf_category_id;

Espero te sirva.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #9 (permalink)  
Antiguo 23/04/2009, 16:45
Avatar de lone  
Fecha de Ingreso: abril-2009
Ubicación: Valencia
Mensajes: 8
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: No consigo actualizar campos en una tabla desde otra tabla

MUCHISISMAS GRACIAS HUESOS52.

Perdona no haber podido responder antes, pero he tenido que salir urgentemente.

Ha funcionado perfectamente. Y ahora que veo la estructura del código que me has pasado entiendo como funciona.

De nuevo muchisimas gracias.
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 17:36.