J'ai un soucis avec une de mes requêtes SQL que j'utilise pour un jeu que je code. Je veux faire en sorte de mettre à jour le score du joueur lorsqu'il se déconnecte. Pour faire ca je dois faire la somme des points que rapportent les défis que le joueur à fait et la mettre dans mon champ score de ma table joueurs.
Lorsque j'effectue ma requête, j'obtient l'erreur "Can't specify target for update in FROM clause", je comprends cette erreur, je ne peux pas modifier une table et en même temps effectuer un SELECT dessus.
Mais ma question est comment est-ce que je peux faire pour passer outre ?
UPDATE joueurs AS p1
SET p1.SCORE =
(
SELECT SUM(MODFISCORE)
FROM joueurs_defis NATURAL JOIN defis_typesimpacts
WHERE ETAT='2' AND ID_JOUEUR =(SELECT p3.ID_JOUEUR FROM joueurs AS p3 WHERE p3.PSEUDO ="Testeur")
)
WHERE p1.ID_JOUEUR =
(
SELECT p2.ID_JOUEUR
FROM joueurs AS p2
WHERE p2.PSEUDO = "Testeur"
)
Merci et j'espère être assez clair.
EDIT:
J'ai trouvé la réponse à ma question.
Pour ceux que ca intéresse :
UPDATE joueurs AS p1
SET p1.score =
( SELECT SUM(modfiscore)
FROM joueurs_defis
NATURAL JOIN
defis_typesimpacts
WHERE etat = '2'
AND joueurs_defis.id_joueur = p1.id_joueur
)
WHERE p1.pseudo = 'Testeur';
- Edité par FistiPaul 17 octobre 2019 à 16:05:27
[MySQL] erreur #1093 target for update in FROM
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.