Sarc Posté 9 Août 2006 Partager Posté 9 Août 2006 Bonjour à tous, J'ai des données en pourcentage dans ma base de données, et j'aimerais pouvoir les modifier rapidement tout en faisant en sorte qu'elles restent comprises entre 0 et 100... Par exemple si on a 99% et qu'on ajoute 5, que ça reste bloqué à 100, et de même pour 0. J'ai bien essayé avec Min et Max : Update Machin set pourcentage = min(100, max(pourcentage+5, 0)) mais ça me renvoie un message d'erreur, la syntaxe est incorrecte... Je suppose donc que c'est pas comme ça qu'il faut faire Bon bien sûr je peux toujours extraire les données, les tester avec PHP, et remettre la bonne valeur, mais je préférerais aller au plus court avec Sql si possible, donc s'il y a une solution, vous seriez sympas de me la donner Merci d'avance Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bourinho Posté 9 Août 2006 Partager Posté 9 Août 2006 (modifié) Salut, je peux te proposer un truc... Tout d'abord, MIN et MAX sont des fonctions d'agregation (pour les GROUP BY), donc il est normal que ce que tu cherches à faire ne fonctionne pas... mais on peut ruser... sachant que (j'aime les maths...) min(x,y)= ((x+y)-abs(x-y))/2 et max(x,y)= ((x+y)+abs(x-y))/2 donc ce que tu cherches a faire devient (attention les yeux...) avec $Modif=+5 dans ton cas...tu peux le modifier meme par un nombre negatif! Update Machin set pourcentage = (100+(pourcentage+$Modif+abs(pourcentage+$Modif))/2-abs(100-(pourcentage+$Modif+abs(pourcentage+$Modif))/2))/2 Quoi c'est moche??? Edit : J'avais confondu des - et des +... Edit2 : Y a aussi GREATEST a la place de MAX et LEAST à la place de MIN...lol Modifié 9 Août 2006 par Bourinho Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sarc Posté 9 Août 2006 Auteur Partager Posté 9 Août 2006 Hum, que dire.. Merci beaucoup Bourinho, tu m'as fait avoir honte avec les formules mathématiques, j'avais complètement zappé... Mais tout ça pour dire que ça marche pas comme je voudrais... Nombre d'enregistrements affectés : 0 (traitement: 0.0004 sec.) Il refuse de me modifier les données parfois, même si je rajoute colonne=colonne+1 sur une autre colonne, il traite pas dans certains cas à priori, je sais pas d'où ça peut venir... Je vais donc continuer à fouiller un peu (j'ai testé avec Least et Greatest), et voir pourquoi il me modifie pas systématiquement la ligne ! Je reviens si j'ai du nouveau ! EDIT : j'ai du nouveau, ça marche. Avec les deux méthodes, il n'y a pas de soucis visibles au premier coup d'oeil en tout cas... C'était tellement brouillon que j'avais fait une petite erreur de syntaxe, au temps pour moi ! Enfin bref encore merci Bourinho pour m'avoir appris Least et Greatest, et aussi pour m'avoir fait réviser mes petites formules mathématiques... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant