Aller au contenu

Update avec Min et Max ?


Sarc

Sujets conseillés

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 :hypocrite:

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

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

:smartass:

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é par Bourinho
Lien vers le commentaire
Partager sur d’autres sites

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

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...