Mam ogólne pytanie, które postaram się wyjaśnić za pomocą przykładu.MySQL/SQL: Aktualizacja ze skorelowanym podzapytaniem z zaktualizowanej samej tabeli
Say mam tabeli z polami: „id”, „Kategoria” „name”, „występach” i „stosunek”
Chodzi o to, że mam kilka elementów, każdy związany z pojedynczym kategoria i "pojawia się" kilka razy. Pole wskaźnika powinno uwzględniać procent wyświetleń każdej pozycji z całkowitej liczby wystąpień pozycji w kategorii.
W pseudo-kodu, co potrzebne jest następujące:
Dla każdej kategorii
znaleźć całkowitą sumę występach dla elementów z nią związanych. Na przykład może to być zrobione z (select sum("appearances") from table group by category
)dla każdej pozycji
ustawić wartość współczynnika jak występy elementu, podzielony przez sumę ustalonych dla kategorii powyżej
Teraz jestem próbuje to osiągnąć za pomocą pojedynczego zapytania o aktualizację, ale nie może tego zrobić. Co pomyślałem, że powinienem zrobić to:
update Table T
set T.ratio = T.appearances/
(
select sum(S.appearances)
from Table S
where S.id = T.id
)
Ale MySQL nie akceptuje alias T w kolumnie aktualizacji, a nie mogę znaleźć inne sposoby osiągnięcia tego celu.
Wszelkie pomysły?
Proszę o oznaczenie odpowiedzi jako odpowiedzi, więc to pytanie zostanie usunięte z listy pytań bez odpowiedzi :) –
@Frans: Musiałem czekać 48 godzin, zanim mogłem to zrobić, zasady przepełnienia stosu :) –
Nice. Dziękujemy za poświęcenie czasu, aby podać pełny przykład! – Ben