|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() |
Bonjour à tous,
Voilà, je me pose deux petites questions que je vais vous exposer. J'ai une table, contenant disons (id,champ1,champ2,...,champ30) Si je veux soustraire 1 à tous ces champs sauf l'id bien entendu, je suis dans l'état actuel de mes connaissances obligé de faire Code :
UPDATE TABLE SET champ1=(champ1-1), champ2=(champ2-1),..., champ30=(champ30-1) Voici mes deux questions : N'est-il pas possible, puisque j'effectue exactement la même opération sur tous les champs, de résumer ceci en une phrase plus simple du genre : Code :
UPDATE TABLE SET *=(*-1) EXCEPT TABLE.id Code :
UPDATE TABLE SET *=(*-1) EXCEPT TABLE.id AND TABLE.*<=1 Bien entendu mon code ne veut rien dire tel quel, mais j'ai beau fouiller la doc MySQL, je ne trouve pas mon bonheur :s Merci à tous les lecteurs de ce sujet ! |
|
|
00
|
|
|
#2 |
|
Membre habitué
![]() Inscription : février 2006 Messages : 118 ![]() |
Je ne connais pas d'autres solutions, mais par contre je trouve un peu étrange de devoir faire ce type de requête.
Tu gères quoi comme données si c'est pas indiscret? Peut-être que si tu refaisais ton modèle t'aurais pas ce problème. Bonne chance! |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() |
En fait il s'agit d'un jeu de rôle. Les joueurs ont un certain niveau de diverses qualifications, mais lorsqu'elle ne sont pas utilisées, ces compétences se perdent.
Ma seule autre solution serait de stocker la dernière utilisation de chaque compétence, et de diminuer celle-ci en fonction lorsqu'elle est utilisée, mais le problème est que la feuille de personnage ne prendrait pas en compte ces micro-changements réguliers. Il faudrait alors utiliser TOUTES les compétences pour être sûr de les avoir à jour (et encore) ce qui est impossible techniquement. Du coup je vais devoir récupérer tous les champs, puis avec une boucle PHP diminuer chaque champ étant supérieur à ma valeur minimum, et enfin tous les remettre en bdd. Ca fait beaucoup de calculs pour pas grand chose, surtout si toutes les compétences sont à zéro par exemple. Une autre solution serait de stocker toutes les compétences séparément, ce qui multiplierait par 30 (pour l'instant) le nombre d'enregistrements... et une base de données n'est théoriquement pas faite pour stocker toutes les valeurs séparément, c'est justement tout l'intéret de la chose :s Bref, je suis complètement bloqué, c'est dommage, je suis certain qu'il y a une solution : c'est pas possible qu'avec mon niveau médiocre en programmation je me heurte déjà aux limites du language ! Si quelqu'un avait une idée, je lui en serait excessivement reconnaissant ! |
|
|
00
|
|
|
#4 | |
![]() ![]() Inscription : juin 2003 Messages : 4 893 ![]() |
Citation:
- identifiantCompetance - identifiantPj - nomCompetance - valeurCompetance
__________________
Modérateur PHP |
|
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() |
Dans ce cas pourquoi ne pas faire un fichier texte nommé $idperso$idcompetence.bin contenant juste la valeur (puisque le nom de la compétence est selon la valeur).
Et puis pour les champs login et motdepasse faut que je fasse une table avec : - idcompte - typedevaleur - valeur et comme ca Super ! j'ai séparé mes valeurs ! Il me reste plus qu'à récupérer le login, l'utiliser pour en déduire l'id du compte, puis récupérer le mot de passe correspondant, le comparer avec le mot de passe entré par le visiteur, et si c'est pareil, alors j'ouvre la session ! Tu es sûr de ce que tu dis ? Parce que ca me parait légèrement.. comment dire... "étrange", en espérant que mon post ne sera pas vexant. Je n'ai, personnellement hein, mais je ne connais peut-être que des dizaines de développeurs stupides, jamais entendu parler d'une utilisation de base de données dans laquelle on séparait toutes les valeurs à priori. J'ai entendu des tonnes de recommendations sur "ne jamais mettre SELECT *", ou "toujours mettre LIMIT 1", ou des tas de choses de ce genre, mais jamais de "les caractéristiques de ton enregistrement doivent toutes êtres stockées séparément", non, jamais. Pour prendre un exemple parfaitement bateau, une bibliothèque doit-elle utiliser une base de donnée de type : - idlivre - idcaractéristique - caractéristique ou plutôt : - idlivre - titrelivre - auteurlivre - annéelivre - ... ??? |
|
|
00
|
|
|
#6 | |
![]() ![]() Inscription : juin 2003 Messages : 4 893 ![]() |
Citation:
si par exemple pour un "Livre" tu as plusieurs personnes comme par exemple l'auteur et le traducteur, là tu auras les tables suivantes par exemple : Livre - idLivre - titreLivre - anneeLivre LivrePersonne (la clé primaire est sur "idLivre" et "idPersonne") - idLivre - idPersonne - typeLivrePersonne (auteur, traducteur, ...) Personne - idPersonne - nomPersonne - prenomPersonne La règle principale est de ne pas avoir de données en double. Là si la même personne est auteur d'un livre et traductrice d'un autre, c'est personne apparait une seule fois dans la table Personne
__________________
Modérateur PHP |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com