Tengo una pregunta genérica que trataré de explicar con un ejemplo.MySQL/SQL: actualización con subconsulta correlacionada desde la tabla actualizada en sí
Decir que tengo una tabla con los campos: "id", "nombre", "categoría", "apariencias" y "proporción"
La idea es que tengo varios artículos, cada uno relacionado con un único categoría y "aparece" varias veces. El campo de relación debe incluir el porcentaje de las apariciones de cada elemento del número total de apariciones de los elementos en la categoría.
En pseudocódigo lo que necesito es el siguiente:
Para cada categoría
encontrar la suma total de las apariencias para los artículos relacionados con el mismo. Por ejemplo, se puede hacer con (select sum("appearances") from table group by category
)Para cada elemento
establecer el valor de la relación como apariciones del elemento dividido por la suma encontrados para la categoría anterior
Ahora estoy tratando de lograr esto con una sola consulta de actualización, pero parece que no puede hacerlo. Lo que pensé que debería hacer es:
update Table T
set T.ratio = T.appearances/
(
select sum(S.appearances)
from Table S
where S.id = T.id
)
Pero MySQL no acepta el alias T en la columna de la actualización, y que no encontrar otras maneras de lograr esto.
¿Alguna idea?
Seleccione una respuesta como respuesta, de modo que esta pregunta se elimine de la lista de preguntas sin respuesta :) –
@Frans: Tuve que esperar 48 horas antes de poder hacerlo, reglas de desbordamiento de pila :) –
Niza. ¡Gracias por tomarse el tiempo de dar un ejemplo completo! – Ben