Environment Posted March 13, 2017 Share Posted March 13, 2017 Estimados, Los consulto porque tengo el siguiente problema. Al importar combinaciones inicialmente no agregue el campo REFERENCE para cada combinación. Cuando quiero mediante CSV actualizar esas combinaciones se me duplican los valores, debido a que no hay referencia donde hacer el UPDATE. (Entonces me figura por ejemplo: dos atributos "rojo" con distinto precio) Consulto a quienes conocen mejor las tablas y la forma de almacenamiento de datos de PS, podrían ayudarme a crear una instrucción SQL que elimine todas las combinaciones de un producto dado, para luego importar desde 0 mediante mi CSV y así evitar duplicados en aquellas que no tienen referencia. Sería en principio un DELETE a la tabla donde se almacena la combinación en relación al producto. Espero se entienda a lo que me refiero. A veces es un poco difícil explicarlo en un texto. Como siempre gracias. Link to comment Share on other sites More sharing options...
piribipipi Posted March 14, 2017 Share Posted March 14, 2017 Hola, yo cree un modulo que elimina las combinaciones pero para todos los productos de una determinada categoria, no se si puede ayudarte eso... (Podrias eliminar un producto concreto si por ejemplo creas una categoria ficticia y asocias ese unico producto a esa categoria) Link to comment Share on other sites More sharing options...
Environment Posted March 15, 2017 Author Share Posted March 15, 2017 (edited) Hola Piribipipi, gracias por contestar. Estaría bueno si el modulo es gratuito ver como armaste la instrucción SQL tal vez pueda modificarla para que realice un DELETE. Mi teoría es esta (aunque puedo estar equivocado) Realizar un DELETE a la tabla ps_ (o el prefijo que hayas definido)product_atribute_combination relacionada con ps_product_atribute a través de campo id_product_atribute (deberia usar un JOIN) donde ps_product_atribute.id_product IN () una serie de ids separados por "," Hay muchas tablas adicionales que no se si tendría que editarlas (atribute_shop y otras) aunque a priori no parecería ser necesario. Lo ves posible? Me preocupa el tema del stock asociado cuando hay control de stock avanzado activo. Edited March 15, 2017 by Environment (see edit history) Link to comment Share on other sites More sharing options...
Environment Posted March 15, 2017 Author Share Posted March 15, 2017 Si uso esta sentencia: SELECT al.name FROM ps_attribute_lang al INNER JOIN ps_product_attribute_combination pac ON pac.id_attribute=al.id_attribute INNER JOIN ps_product_attribute pa ON pac.id_product_attribute = pa.id_product_attribute WHERE pa.id_product IN (6021,6020,6022) Obtengo las combinaciones de los productos 6021, 6020 y 6022 por ejemplo Que pasa si convierto ese SELECT en un DELETE? Alcanza con eliminar solo ese registro en ps_product_atributte_combination? O debo eliminarlo de alguna otra tabla adicional? Saludos Link to comment Share on other sites More sharing options...
Environment Posted March 15, 2017 Author Share Posted March 15, 2017 Depués de jugar un rato surgió esta instrucción para borrar todas las combinaciones para uno o más productos. DELETE ppa.*,ppac.*,ppas.* FROM ps_product_attribute ppa INNER JOIN ps_product_attribute_combination ppac ON ppa.id_product_attribute=ppac.id_product_attribute INNER JOIN ps_product_attribute_shop ppas ON ppas.id_product_attribute=ppa.id_product_attribute WHERE ppa.id_product=6021 Para que sirve esto? En mi caso la utilizo para eliminar combinaciones de productos que fueron importadas mediante .CSV y se duplicaron por no haber definido el campo reference. Entonces elimino todo para esos productos y vuelvo a importar el CSV para que queden solo las que quiero. En el ejemplo usé el id 6021 porque estoy borrando combinaciones de solo ese producto pero se podría agregar un IN() para más de un ID. Si algún usr la quiere probar se aceptan criticas y mejoras. RECUERDEN SIEMPRE BACKUPEAR LA BS ANTES DE TIRAR UNA CONSULTA COMO ESTA.(ASÍ DE ULTIMA PUEDEN HACER UN ROLLBACK) Saludos Link to comment Share on other sites More sharing options...
estorde Posted October 16, 2018 Share Posted October 16, 2018 Llevo días buscando algo como esto.... Cómo haría entonces para eliminar TODAS las combinaciones de TODOS los productos?? Siguiendo la orden SQL que has utilizado, podría simplemente eliminar la última fila para que no afecte a un sólo producto, sino a todos? o poner un * en lugar del id de un producto?? DELETE ppa.*,ppac.*,ppas.* FROM ps_product_attribute ppa INNER JOIN ps_product_attribute_combination ppac ON ppa.id_product_attribute=ppac.id_product_attribute INNER JOIN ps_product_attribute_shop ppas ON ppas.id_product_attribute=ppa.id_product_attribute WHERE ppa.id_product=6021 Por cierto, utilizo la versión 1.7.3 de Prestashop por si esto de alguna manera afecta al nombre de las tablas, etc. Muchas gracias Link to comment Share on other sites More sharing options...
estorde Posted October 16, 2018 Share Posted October 16, 2018 (edited) Al intentar ejecutar esta orden desde Parámetros Avanzados > Base de Datos > Gestor SQL SELECT al.name FROM satun_attribute_lang al INNER JOIN satun_product_attribute_combination pac ON pac.id_attribute=al.id_attribute INNER JOIN satun_product_attribute pa ON pac.id_product_attribute = pa.id_product_attribute WHERE pa.id_product=* el prefijo de mis tablas es "satun_" en lugar de "ps_" por eso lo modifiqué en la consulta. Pero me sale el siguiente error:Error indefinido "checkedWhere" Edited October 16, 2018 by estorde adjuntar imagen y editar el código utilizado (see edit history) Link to comment Share on other sites More sharing options...
rastreator Posted December 17, 2019 Share Posted December 17, 2019 Refloto este hilo porque necesito borrar una combinación concreta de toda una categoría de produtos (en realidad de todos los productos donde esa combinación exista, pero igual es mucho pedir). ¿Cómo tendría que hacer esto? Hablando de prestashop 1.6 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