Обновление с расчетом процента на той же таблице - PullRequest
0 голосов
/ 14 декабря 2010

У меня есть такая таблица:

ItemID      PersonID  Score      Percentage
==========================================
1             1       10         [ = 10 / 10+30 = 25%]
1             2       30         [ = 30 / 10+30 = 75%]
2             1       20         [ = 20 / 20+40 = 33%]
2             2       40         [ = 40 / 20+40 = 67%]

Данные в процентах не вводятся, но рассчитываются автоматически через определенный промежуток времени. Вычисление Процент = Оценка / Общая оценка ItemID

Вместо использования метода «SELECT-do the maths-UPDATE» я пытаюсь написать один SQL-запрос для обновления «Percentage».

То, что я пробовал, выглядит так:

UPDATE tb_temp AS t1 
    SET t1.Percentage = 
        CEIL( t1.Score / 
            (SELECT SUM(t2.Score) FROM tb_temp AS t2 WHERE t2.ItemID = t1.ItemID)
        );

Но это не работает. (Код ошибки: 1093 Невозможно указать целевую таблицу 't1' для обновления в предложении FROM).

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 14 декабря 2010
UPDATE tb_temp AS t1 
    SET t1.Percentage = 
        CEIL( t1.Score / 
            (SELECT SUM(t2.Score) FROM tb_temp AS t2 left join tb_temp AS t3 on t2.ItemID = t3.ItemID)
        );
0 голосов
/ 14 декабря 2010

попробуй:

  UPDATE tb_temp t1 
     JOIN (SELECT ItemId, SUM(t2.Score) TotalScore
           FROM tb_temp 
           group by ItemId) t2 ON t2.ItemID = t1.ItemID
  SET t1.Percentage = CEIL( t1.Score / t2.TotalScore)
...