yapahoe Posted December 4, 2023 Share Posted December 4, 2023 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 More sharing options...
Manuel_GT Posted December 4, 2023 Share Posted December 4, 2023 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 More sharing options...
yapahoe Posted December 4, 2023 Author Share Posted December 4, 2023 Mi idea es hacer solo UPDATE ya que la categoría “padre” que tiene ahora es correcta y solo quiero añadirle más categorías Link to comment Share on other sites More sharing options...
Manuel_GT Posted December 4, 2023 Share Posted December 4, 2023 @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 More sharing options...
SLOT4EVER Posted December 10, 2023 Share Posted December 10, 2023 Yo tenía un problema parecido, y con el módulo del editor en masa lo pude solucionar bastante bien. Te lo puedes descargar, es un módulo bastante común. Link to comment Share on other sites More sharing options...
Aldeag Posted December 10, 2023 Share Posted December 10, 2023 Link to comment Share on other sites More sharing options...
Manuel_GT Posted December 10, 2023 Share Posted December 10, 2023 Muy interesante @Aldeag Gracias! Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now