Bonjour,
Tout d'abord je suis désolé du titre qui n'est pas du tout explicite mais je ne voyais pas comment expliquer mon problème en bref.
Après plusieurs essais, et n'étant pas un spécialiste du PHP ou du SQL, et ne trouvant aucune solution "pratique" à mon problème, je viens poser la question ici en espérant trouver mon bonheur.
Voici la requète, mes tables (enfin les infos dont vous avez besoin)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT char.name, global_reg_value.value AS tues, login.sex, char.class, morts.mort, (value / mort) AS ratio FROM `char` INNER JOIN (SELECT char.char_id, global_reg_value.value AS mort FROM `char` INNER JOIN `global_reg_value` ON char.char_id=global_reg_value.char_id WHERE global_reg_value.str='PVPDeath') AS morts ON morts.char_id=char.char_id, `global_reg_value`, `login` WHERE char.char_id=global_reg_value.char_id AND char.account_id=login.account_id AND global_reg_value.str='PVPKill' ORDER BY ratio DESC LIMIT 0,5;
dans char il y a char_id en clé primaire, et account_id en étrangères, et class comme champ.
login : account_id en primaire, et sex en autre champ.
global_reg_value : clé binaire char_id et str, value en autre champ.
Si je peux expliquer le problème en pratique, cette requète est pour une page de stats d'un jeu. Elle devrait permettre d'afficher le nombre de kill et de morts par personne, et les classer par le ratio. Jusqu'ici pas de problème. Mais la variable est en fait créée dans la table global_reg_value, qu'on retrouve donc par char_id + str=PVPKill ou str=PVPDeath, seulement si la valeur est égale à 0, la variable est supprimée (ce n'est pas moi qui ait fait le serveur qui gère ceci), il n'y a donc plus de char_id+ str=PVPDeath, si le joueur n'est jamais mort. Ceci pose un gros problème, si le joueur a 30 kill mais aucune mort, ou l'inverse, il ne sera pas pris enc ompte par la requète. (Ca parait évident en fait , maintenant que je l'expose plus clairement)
Sauriez vous de quelle manière je peux régler ce problème ? Je m'excuse d'avance du manque de clarté et de l'aspect de ma requète qui doit vous sembler barbare. Je ne suis pas un habitué du SQL. Si c'est résolvable par la partie php, ça m'irait très bien aussi. (je fais juste un while qui affiche la requète).
Merci
~
Partager