Cita: Por eso quisiera encontrar una instrucción SQL que lo haga todo de la vez a toda la tabla, para no tener que usar programación con muchas consultas individuales que sería mucho más lento para los servidores
Bueno, empecemos por este tema: NO, no existe una instrucción que pueda hacer eso, y de existir no estaría diseñada para realizar tareas sobre tablas que no respetan el modelo relacional. Eso desde ya.
Sólo te resta intentarlo creando los procesos programados, o bien stored procedures, que realicen esa tarea.
Cita: La base de datos con la que tengo este problema es de la tienda virtual de Prestashop, y está hecha así. Suapongo que será para hacer búsquedas y dibujar listas de forma más rápida sin tener que estar calculando constantemente.
Ese tipo de bases están diseñadas normalmente por taxonomías, con lo que lo que se hace es crear una base de datos reducida en tablas, de alta flexibilidad, y adaptable a diferentes escenarios.
Eso parece una gran idea, pero no lo es. Para hacer eso sacrifican una gran cantidad de capacidades y beneficios de los sistemas relacionales, y descargan toda la responsabilidad en la aplicación.
Se desarrollaron para aplicaciones livianas, en realidad. Cuando el sistema comercial que se pretende sostener es mas o menso complejo, de alto nivel de transacciones, ese tipo de bases, al menos en los aspectos contables y financieros, simplemente no sirve. Hay que empezar de nuevo y descartar en los subsistemas contables todo lo que sea asi, y diseñar una base correctamente.
Básicamente, no hay soluciones a tu dilema desde el MySQL. Tendrás que poner mucho esfuerzo de programación y ver qué puedes hacer con store procedures y events.