Salut tout le monde,
Voilà ma situation. J'ai 3 tables :
pjsac, pjinventaire, objet
La première contient les informations du sac de mes personnages, elle a 2 champs qui nous intéresse:
ID qui est l'ID du personnage, qui est la primary key de la table
poids (qui est le poids actuellement transporté)
pjinventaire contient l'ensemble des objets possédés par un joueur. Elle a 3 champs :
IDpj qui est l'ID du joueur
IDobjet qui est l'ID de l'objet
quantité : le nombre d'objet transporté.
IDpj ET IDobjet forment la primary key.
Ce qui signifie qu'un même personnage sera répertorié sur plusieurs enregistrements dans cette table avec 1 enregistrement par personnage et par objet distinct.
objet contient l'ensemble des données concernant un objet. Elle a 2 champs qui nous intéressent :
ID qui est l'ID de l'objet
poids qui est le poids de l'objet.
On peut relier les tables ainsi :
pjinventaire.IDpj et pjsac.ID représente la même chose
pjinventaire.IDobjet et objet.ID représente la même chose.
Le problème que j'ai, c'est qu'il me faut recalculer la valeur du sac à dos pour TOUS mes personnages. (suite à une exploitation abusive de la part d'un joueur qui m'a fait planté mon poids)
Le poids du sac à dos se calcule en gros ainsi : somme(objet.poids*pjinventaire.quantite)... pour chaque pj bien sûr.
J'ai essayé une requête, mais elle donne pas franchement ce que je veux :
A l'heure actuelle, elle ne parcourt pas toute la table pjinventaire, mais uniquement le premier enregistrement de chaque personnage. (du moins c'est ce que j'interprète des résultats)
Donc voilà, si quelqu'un a une idée pour régler ce soucis.
Modifié par Lothindil (27 Sep 2011 - 12:14)
Voilà ma situation. J'ai 3 tables :
pjsac, pjinventaire, objet
La première contient les informations du sac de mes personnages, elle a 2 champs qui nous intéresse:
ID qui est l'ID du personnage, qui est la primary key de la table
poids (qui est le poids actuellement transporté)
pjinventaire contient l'ensemble des objets possédés par un joueur. Elle a 3 champs :
IDpj qui est l'ID du joueur
IDobjet qui est l'ID de l'objet
quantité : le nombre d'objet transporté.
IDpj ET IDobjet forment la primary key.
Ce qui signifie qu'un même personnage sera répertorié sur plusieurs enregistrements dans cette table avec 1 enregistrement par personnage et par objet distinct.
objet contient l'ensemble des données concernant un objet. Elle a 2 champs qui nous intéressent :
ID qui est l'ID de l'objet
poids qui est le poids de l'objet.
On peut relier les tables ainsi :
pjinventaire.IDpj et pjsac.ID représente la même chose
pjinventaire.IDobjet et objet.ID représente la même chose.
Le problème que j'ai, c'est qu'il me faut recalculer la valeur du sac à dos pour TOUS mes personnages. (suite à une exploitation abusive de la part d'un joueur qui m'a fait planté mon poids)
Le poids du sac à dos se calcule en gros ainsi : somme(objet.poids*pjinventaire.quantite)... pour chaque pj bien sûr.
J'ai essayé une requête, mais elle donne pas franchement ce que je veux :
update pjsac set pjsac.poids=0;
update pjsac,pjinventaire,objet
set pjsac.poids=pjsac.poids+(objet.poids*pjinventaire.quantite)
where pjinventaire.IDpj= pjsac.ID AND pjinventaire.IDobjet =objet.ID;
A l'heure actuelle, elle ne parcourt pas toute la table pjinventaire, mais uniquement le premier enregistrement de chaque personnage. (du moins c'est ce que j'interprète des résultats)

Donc voilà, si quelqu'un a une idée pour régler ce soucis.
Modifié par Lothindil (27 Sep 2011 - 12:14)