Mettre à jour le tableau avec la SOMME d'une autre table

Je suis en train de ce que je pensais, allait être une simple mise à jour d'une table avec la somme d'une autre table, mais pour quelque raison, c'est seulement la mise à jour d'une ligne. Voici ce que les informations pertinentes à partir des tables ressembler à:

jeux

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

playercareer

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

Maintenant, en fin de compte, je voudrais que le dernier tableau de ressembler à ce qu'après l'exécution de la mise à jour:

playercareer

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

C'est la requête que j'ai tenté que seules les mises à jour de la première rangée:

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

Je n'arrive pas à trouver la réponse à cette question. Merci d'avance pour votre temps et vos conseils!!!

  • Désolé, je suis en utilisant MySQL 5.5.16.
  • J'ai testé votre code avec SQL Server et il fonctionne très bien (sqlfiddle.com/#!3/97125/2). Peut-être vous devriez vérifier votre les noms des joueurs (peut-être l'un est blanc, l'espace et le match ne peut pas être faite). En fin de compte, je voudrais vous recommander d'utiliser des Id au lieu de Noms et d'utiliser une table relationnelle.
  • Eh bien, fonctionne toujours très bien avec MySQL 5.5! (sqlfiddle.com/#!2/97125/1)
  • C'est bizarre. @FrancisP de sqlfiddle semble parfait. @BigJay, peut-être que le problème est lié à la manière de vos tables structurés? Vous pouvez poster à la sortie de SHOW CREATE TABLE games et SHOW CREATE TABLE playercareer?
  • Ce n'est pas une très bonne idée. Vous êtes en train d'ajouter de la redondance à votre base de données en ajoutant des données qu'il contient déjà. Est-il une raison pour laquelle vous ne pouvez pas sélectionner la SOMME quand vous en avez besoin?
  • WOW! Viens de découvrir sqlfiddle ici dans les commentaires... outil fantastique!
  • J'ai juste essayé la suggestion faite par Francis et ajout d'une nouvelle colonne de chaque table appelée playerid et playercareerid. Peuplée de ces champs afin que l'ID du match de la playernames, mise à jour de ma requête, re-couru et il a travaillé comme il le fallait. Si Francis avait probablement raison dans le fait, il peut être un match erreur quelque part. @Jim C'est un très décontracté base de données avec au max 7 utilisateurs avec une fréquence de mise à jour d'environ un mois d'intervalle. Ces données sont transmises à une page PHP. Je suis certain il y a des approches plus appropriées, mais je suis encore assez débutant et j'espère en apprendre plus que je vais. Merci Francis!
  • c'est grand, mais que faire si nous avons des millions de lignes à la fois sur les tables. Les champs qui doivent nous considérons pour l'indexation ?

InformationsquelleAutor BigJay | 2012-04-10