2016-10-30 2 views
0

Я этот запрос:Выполнения другого запроса на основе прецедентной ситуации

выхода
SELECT r.runk_user_id, 
     CASE r.runk_user_id WHEN g.group_player1_user_id THEN 'player 1' 
          WHEN g.group_player2_user_id THEN 'player 2' 
          WHEN g.group_player3_user_id THEN 'player 3' 
          WHEN g.group_player4_user_id THEN 'player 4' 
          ELSE 'no player matches' 
     END AS player 
FROM groups g 
JOIN runks r ON g.group_id = r.runk_group_id 

Это будет следующий результат:

enter image description here

Вместо вывод данных запроса, в результате мне это нужно для выполнения других запросов, основанных на том, каков результат утверждения этого случая.

Так что в случае «игрока 1» является случай требует, чтобы выполняться этот запрос:

UPDATE groups AS g1, 
(SELECT (runk_image_rating_total + runk_caption_rating_total + runk_challenge_rating_total) as total, g.group_id 
FROM groups g 
JOIN runks r 
ON g.group_id = r.runk_group_id) AS g2 
SET g1.group_player1_standing = g2.total + g1.group_player1_standing 
WHERE g1.group_id = g2.group_id 

В случае «игрока 2» это необходимо, чтобы получить казнены:

UPDATE groups AS g1, 
(SELECT (runk_image_rating_total + runk_caption_rating_total + runk_challenge_rating_total) as total, g.group_id 
FROM groups g 
JOIN runks r 
ON g.group_id = r.runk_group_id) AS g2 
SET g1.group_player2_standing = g2.total + g1.group_player2_standing 
WHERE g1.group_id = g2.group_id 

Этот какие таблицы выглядит следующим образом:

enter image description here

enter image description here

Etc и т. Д. Может ли кто-нибудь сказать мне, как это сделать?

ответ

0

Я как-то должен был сделать что-то подобное, используя заявление CASE. Я пробовал адаптировать ваш код, дайте мне знать, если он будет работать

UPDATE groups AS g1, 
(SELECT (runk_image_rating_total + runk_caption_rating_total + runk_challenge_rating_total) as total, g.group_id 
FROM groups g 
JOIN runks r 
ON g.group_id = r.runk_group_id) AS g2 
SET g1.group_player2_standing = CASE 
WHEN player = player_1 then g2.total + g1.group_player1_standing 
WHEN player = player_2 then g2.total + g1.group_player2_standing 
ELSE '' 
END 
WHERE g1.group_id = g2.group_id AND player IN (player_1, player_2) 
+0

Спасибо! Но запрос возвращает ошибку: # 1064 - У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с WHERE g1.group_id = g2.group_id И проигрыватель IN (player_1, player_2) 'по строке 9 –

+0

@ RutgerHuijsmans обновил мой ответ, забыл поставить END часть. – Nick

+0

Получение этой ошибки сейчас: # 1054 - Неизвестный столбец 'player' в 'where clause' –

Смежные вопросы