2015-01-11 4 views
0

Я пытаюсь написать запрос, который принимает точку, переданную игроку в событии соответствия, умножает его на другой столбец, а затем на 3, а затем копирует результат в таблицу игроков где игрок уже существует. Ошибка, но я не могу найти, что не так. Можете ли вы мне помочь, пожалуйста, решить эту проблему?Неправильный синтаксис в запросе SQL

UPDATE 
j7yh8_bl_match_events, 
j7yh8_bl_players 

SET 
j7yh8_bl_players.player_points = SELECT COUNT(j7yh8_bl_match_events.e_id) * j7yh8_bl_match_events.ecount * 3, 

WHERE 
j7yh8_bl_match_events.player_id = j7yh8_bl_players.id AND j7yh8_bl_match_events.e_id = 5; 

Любая помощь будет оценена по достоинству.

спасибо.

ответ

2

В MySQL вы можете использовать join с update. Однако любые функции агрегации должны быть в подзапросах.

Я не уверен на 100%, что выражение предназначено для вычисления точек. Кажется, что-то вроде этого решает вашу проблему:

UPDATE j7yh8_bl_players p LEFT JOIN 
     (SELECT me.player_id, SUM(me.ecount) * 3 as points 
     FROM j7yh8_bl_match_events me 
     WHERE me.e_id = 5 
     GROUP BY me.player_id 
     ) me 
     ON me.player_id = p.id 
    SET p.player_points = me.points 
+0

Отлично, Гордон. Он работает отлично. Большое спасибо за разъяснения и помощь! –