Jump to content

Actualizar la categoría de los productos con sql


yapahoe

Recommended Posts

Buenas tardes. 

No consigo dar con la sentencia SQL para poder actualizar la categoría de los productos. 

Es decir, me explico y os cuento lo que intento y no hay manera.

Yo tengo 3065 productos y estoy moviendo productos de un lado a otro pero 1x1 es una locura, por lo que me gustaría poder por ejemplo.

Actualizar del ID: 1045 al 1089 las categorías a las que pertenece son , 40 67, 172 por ejemplo. 

NO quiero actualizar nada mas, ni precio ni producto ni nada. Solo la categoría a la que pertenecen los productos comprendidos entre X eh Y. Y tampoco cambiar su categoría padre. 

Si me podéis ayudar os lo agradecería. 

En cualquier caso, gracias por leer este post. 


Saludos. 

Link to comment
Share on other sites

Hola @yapahoe

A ver. El tema es que entre productos y categorías existe una relación N a M o lo que es lo mismo, un producto pertenece a varias categorías y una categoría tiene varios productos.

La tabla category_product almacena estas relaciones. Tal y como lo planteas podrías hacer algo como:
 

delete from category_product where id_product between (1045 and 1089);

insert into category_product select 40 as id_category , id_product, 1 as  position from product where id_product between (1045 and 1089);

insert into category_product select 67 as id_category , id_product, 1 as  position from product where id_product between (1045 and 1089);

insert into category_product select 172 as id_category , id_product, 1 as  position from product where id_product between (1045 and 1089);

pero CUIDADO! con el delete estas borrando TODAS las categorías que tenia asignado el producto. Deberás reconstruirlas con inserts o establecer los IDs de las categorías que quieres borrar. Si solo quieres añadir, pues no hagas el delete.

Yo te recomiendo que pruebes con un solo producto y veas el resultado antes de lanzarte a borrar e insertar, y por supuesto, siempre un backup de todo antes de empezar.

Espero te sirva.

 

 

Link to comment
Share on other sites

@yapahoe

ya ¿pero como haces update? Si tienes un producto que pertenecía a dos categorías y ahora a cuatro forzosamente necesitas hacer dos insert y dos update. Para eso borra los dos que hay y haces 4 insert.

Como te he comentado si quieres salvaguardar categorías tendrás que excluirlas de los deletes. Eso ya depende de la forma de tus datos. Por ejemplo a lo mejor las categorías "padre" van del ID 1 al 37 con lo que podrías añadir al delete un "and id_category > 37" para asegurarte que no borras las que quieres. Si el conjunto es heterogéneo puedes usar la clausula "not in" con los valores. Por ejemplo:

and id_category not in (13,57,23,12,90)

y cosas así. Estudia un poco como son tus datos y seguro que encuentras la manera de cambiarlas rápidamente.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...