B'soir à tous,
Voilà, dans le cadre du développement de mon site je me retrouve avec un petit soucis (ou pas). Pour faire simple, j'ai une table bataillon où l'on retrouve 4 champs:
Jusque là, rien de bien difficile. Je vais vous filer deux trois exemples de lignes histoire que vous visualisiez bien la table
La lecture est assez facile à faire, seulement à ces bataillons sont reliées des caractéristiques (exemple: place prise dans un bastion, puissance, etc.). Ces caractéristiques se trouvent dans un tableau multidimensionnel statique qui ne se trouve donc pas en BDD.
Donc par exemple quand je dois calculer l'occupation d'un bastion, ou la puissance totale sur un bastion, je dois bricoler ma requête en tapant une fonction de ce type:
Je ne vous ai mis ici que le début avec deux unités. Le fait est que j'ai énormément d'unités dans le jeu, ce qui fait que les requêtes sont très longues, et un peu sinueuses.
Evidemment, je ne construis pas mes requêtes manuellement, j'ai un beau foreach qui parcourt tout mon tableau pour en faire une jolie requête prête à l'emploi (donc niveau maintenance, c'est pépère). Mais ça marche et niveau perf j'arrive à des résultats relativement normaux (exemple: calcul de 5 bastions sur plus de 400 joueurs (2300 lignes), traitement en 0.0098 sec.).
Je me demandais donc si il y avait une autre solution, plus lisible, plus logique en somme. Je dois bien avouer que j'ai vraiment bidouillé le truc, mais je n'avais rien trouvé de pertinent dans la doc MySQL ^^
Voilà, dans le cadre du développement de mon site je me retrouve avec un petit soucis (ou pas). Pour faire simple, j'ai une table bataillon où l'on retrouve 4 champs:
Code :
state | player | pattern | number
Code :
HER | 1 | sword | 10
DOL | 1 | distance | 20
HER | 5 | cavalry| 10
La lecture est assez facile à faire, seulement à ces bataillons sont reliées des caractéristiques (exemple: place prise dans un bastion, puissance, etc.). Ces caractéristiques se trouvent dans un tableau multidimensionnel statique qui ne se trouve donc pas en BDD.
Donc par exemple quand je dois calculer l'occupation d'un bastion, ou la puissance totale sur un bastion, je dois bricoler ma requête en tapant une fonction de ce type:
Code :
SELECT SUM( IF(b.pattern = 'sword' AND pi.nation = 'marchand', 1*b.number, 0) + IF(b.pattern = 'middlesword' AND pi.nation = 'marchand', 1*b.number, 0)) as numb, b.state FROM battalion_tbl b ...
Je ne vous ai mis ici que le début avec deux unités. Le fait est que j'ai énormément d'unités dans le jeu, ce qui fait que les requêtes sont très longues, et un peu sinueuses.
Evidemment, je ne construis pas mes requêtes manuellement, j'ai un beau foreach qui parcourt tout mon tableau pour en faire une jolie requête prête à l'emploi (donc niveau maintenance, c'est pépère). Mais ça marche et niveau perf j'arrive à des résultats relativement normaux (exemple: calcul de 5 bastions sur plus de 400 joueurs (2300 lignes), traitement en 0.0098 sec.).
Je me demandais donc si il y avait une autre solution, plus lisible, plus logique en somme. Je dois bien avouer que j'ai vraiment bidouillé le truc, mais je n'avais rien trouvé de pertinent dans la doc MySQL ^^