Вопрос по mysql – Обновить таблицу с суммой из другой таблицы

7

Я пытаюсь сделать то, что, как я думал, будет простым обновлением таблицы с суммой из другой таблицы, но по какой-то причине она обновляет только одну строку. Вот как выглядит соответствующая информация из таблиц:

games

gameplayer|points
----------------
John      |5
Jim       |3
John      |3
Jim       |4

playercareer

playercareername|playercareerpoints
-----------------------------------
John            |0
Jim             |0

Теперь я хотел бы, чтобы последняя таблица выглядела так после запуска обновления:

playercareer

playercareername|playercareerpoints
-----------------------------------
John            |8
Jim             |7

Это запрос, который я попытался обновить только в первой строке:

UPDATE playercareer
SET playercareer.playercareerpoints = 
    (
SELECT 
    SUM(games.points) 
FROM games
    WHERE
     playercareer.playercareername=games.gameplayer
    )

Я не могу найти ответ на этот вопрос. Заранее спасибо за ваше время и советы!

Вы используете SQL Server? Francis P
ВОТ ЭТО ДА! Просто обнаружил sqlfiddle здесь в комментариях ... фантастический инструмент! Leniel Maccaferri
Да ладно, все еще отлично работает с MySQL 5.5! (sqlfiddle.com/#!2/97125/1) Francis P
Это не особенно хорошая идея. Вы добавляете избыточность в свою базу данных, добавляя данные, которые она уже содержит. Есть ли причина, по которой вы не можете выбрать SUM, когда вам это нужно? Jim
Я проверил ваш код с SQL Server, и он работает нормально (sqlfiddle.com/#!3/97125/2). Возможно, вам следует проверить имена своих игроков (может быть, у одного есть пробел, и совпадение не может быть сделано). В конечном счете, я рекомендую вам использовать идентификаторы вместо имен и использовать реляционную таблицу. Francis P

Ваш Ответ

1   ответ
21
UPDATE playercareer c
INNER JOIN (
  SELECT gameplayer, SUM(points) as total
  FROM games
  GROUP BY gameplayer
) x ON c.playercareername = x.gameplayer
SET c.playercareerpoints = x.total
Error: User Rate Limit Exceeded

Похожие вопросы