У меня есть общий вопрос, который я попытаюсь объяснить с помощью примера.
Скажем, у меня есть таблица с полями: "id", "name", "category", "появления" и "ratio"
Идея состоит в том, что у меня есть несколько элементов, каждая из которых связана с одной категорией и "появляется" несколько раз. Поле отношения должно включать в себя процентное количество каждых элементов из общего количества появлений предметов в категории.
В псевдокоде мне нужно следующее:
-
Для каждой категории
найдите общую сумму явлений для предметов, связанных с ней. Например, это можно сделать с помощью (select sum("appearances") from table group by category
) -
Для каждого элемента
задайте значение отношения как значения элементов, деленные на сумму, найденную для категории выше
Теперь я пытаюсь достичь этого с помощью одного запроса на обновление, но, похоже, не может этого сделать. Я думал, что должен сделать:
update Table T
set T.ratio = T.appearances /
(
select sum(S.appearances)
from Table S
where S.id = T.id
)
Но MySQL не принимает псевдоним T в столбце обновления, и я не нашел других способов достижения этого.
Любые идеи?