JeuWeb - Crée ton jeu par navigateur
[MYSQL] requete incomplète - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [MYSQL] requete incomplète (/showthread.php?tid=5430)



[MYSQL] requete incomplète - jldbaro - 17-05-2011

Bonjour,

J'essaye d'optimiser mon code de jeu et je coince sur un problème.

J'ai une table bâtiment, carte, joueur

UPDATE batiment
INNER JOIN joueur ON batiment.Id = joueur.Id
INNER JOIN carte ON batiment.Id = carte.Joueur
SET Temps_construction_petrole="0", batiment.Puits_petrole = batiment.Puits_petrole +1 , carte.Carte_puit_petrole = carte.Carte_puit_petrole +1 , joueur.Terrain = joueur.Terrain + '.$terrain_puit.'
WHERE Temps_construction_petrole>0 AND Temps_construction_petrole <'.time().'

Un joueur peux posséder plusieurs cartes.

Sur chaque carte il peut lancer des construction. Ici on parle de puits de pétrole.

Lors du lancement de la construction, j'indique la valeur de fin dans Temps_construction_petrole.

Le hic ou ma requete coince c'est que si deux puits de pétrole se terminent dans la même minute. Alors il ne rajoute qu'une seule fois carte.Carte_puit_petrole +1.

Ma requête pourrait-elle être formuler autrement pour résoudre le problème?


Merci d'avance à tous,


RE: [MYSQL] requete incomplète - niahoo - 17-05-2011

Citation :Le hic ou ma requete coince c'est que si deux puits de pétrole se terminent dans la même minute. Alors il ne rajoute qu'une seule fois carte.Carte_puit_petrole +1.

et pourquoi ?


RE: [MYSQL] requete incomplète - jldbaro - 17-05-2011

Car il ne le fait pas pour chaque ligne. Mais une fois par requete.


RE: [MYSQL] requete incomplète - niahoo - 17-05-2011

ah oui je vois, même si tu en avais 50 ça n'ajouterais qu'un puits.

Et bien tu es bon pour créer un autre système, la requête ne va pas te sauver. À moins que tu n'utilises des count() et des requêtes imbriquées.

Par contre un truc bizzare, dans ta requête il y a des variables genre 'temps puits pétrole'. Quand on va vouloir construire des mines de charbon, tu vas copier coller ces requêtes en changeant les variables ?


RE: [MYSQL] requete incomplète - jldbaro - 17-05-2011

Oui il y a autant de requête que de batiment... J'avais pensé à un select WHERE Temps_construction_petrole>0 AND Temps_construction_petrole <'.time().' et à chaque fois un update après. Cela fait un peu amateur je trouve...

Tu peux faire un count dans un update?


RE: [MYSQL] requete incomplète - niahoo - 17-05-2011

Ben ce qui fait surtout amateur c'est de faire une requête par type de bâtiment.

je ne sais pas si tu peux faire un count dans un update ou non, mais je ne vois pas pourquoi on ne pourrait pas.


RE: [MYSQL] requete incomplète - jldbaro - 17-05-2011

Je ne vois pas comment faire autrement que par une requête par bâtiment. Car les conditions sont différentes et surtout la modification dans la table bâtiment est différente.


RE: [MYSQL] requete incomplète - Ter Rowan - 17-05-2011

je pense que c'est ta table bâtiment qui pose un premier problème (voire le modèle associé aussi)

si tu fais une requête par type de bâtiment c'est parce que tu as créé des champs par type de bâtiment

tu devrais plutôt faire une table bâtiment avec une colonne type de bâtiment et une colonne nombre de bâtiments (pareil pour les autres)

ensuite le côté +1 au lieu de +2, +50 ... faudrait avoir le modèle complet

je soupçonne quand même que :
Temps_construction_petrole est dans la table batiment
qu'il n'y a aucune information concernant la carte (et donc que si le joueur crée un puit de pétrole, il est créé sur toutes les cartes)



RE: [MYSQL] requete incomplète - Jeckel - 18-05-2011

je pense qu'au lieu de faire "+1" tu devrais plutôt avoir un "+ COUNT(...)" à voir ce qu'il y a à mettre dans le count


RE: [MYSQL] requete incomplète - jldbaro - 18-05-2011

Le champ Temps_construction_petrole est sur chaque table carte.... oui je vais essayer de voir avec un count...