Potrzebuję zrobić zapytanie aktualizujące kolumnę w tabeli X, gdzie wartość kolumny w tabeli X obliczana jest na podstawie sumy wartości kolumny A w tabeli B podzielonej przez sumę wartości kolumny B w tabeli B. Wykombinowałem coś takiego:
  1. UPDATE visualisations v, visualisations_stats vs SET v.ctr = ((SELECT sum(vs2.stats_clicks) FROM visualisations_stats vs2 WHERE vs2.visualisations_id = v.visualisations_id ORDER BY vs2.stats_time DESC LIMIT 100)/(SELECT sum(vs2.stats_displays) FROM visualisations_stats vs2 WHERE vs2.visualisations_id = v.visualisations_id ORDER BY vs2.stats_time DESC LIMIT 100)) WHERE vs.visualisations_id = v.visualisations_id

ale wiadomo - nie działa.
Pytanie jak to zrobić, żeby było dobrze.

Drugi krok. odkryłem JOIN i rozwiązałem problem:
  1. UPDATE visualisations v JOIN
  2. (SELECT visualisations_id, sum(stats_clicks) AS clicks FROM visualisations_stats ORDER BY stats_time DESC LIMIT 100) c ON c.visualisations_id = v.visualisations_id JOIN
  3. (SELECT visualisations_id, sum(stats_displays) AS displays FROM visualisations_stats ORDER BY stats_time DESC LIMIT 100) d ON d.visualisations_id = v.visualisations_id
  4. SET ctr = (c.clicks/d.displays)