Requête avec soustraction ou addition avec des valeurs max en MySQL

Requête avec soustraction ou addition avec des valeurs max en MySQL - SQL/NoSQL - Programmation

Marsh Posté le 05-06-2005 à 17:28:00    

Bonjour.
Voilà, je ne trouve pas comment résoudre mon problème sous Google. Je pense que c'est possible, mais je ne suis même pas sûr en fait. :D
 
J'ai une requête bateau MySQL qui soustrait ou additionne 10 pts d'une valeur, ça donne, par exemple :
UPDATE matable SET mavaleur=mavaleur-10 WHERE id=15
ou
UPDATE matable SET mavaleur=mavaleur+10 WHERE id=15
 
J'aurais voulu savoir que faut-il rajouter pour que mavaleur ne descende pas en dessous de 10 ou ne monte pas plus haut que 100.
Ca doit bien être possible en requête direct, sans être obligé de récupérer 'mavaleur' au préalable.
 
Merci d'avance.


Message édité par The-Shadow le 06-06-2005 à 13:18:34
Reply

Marsh Posté le 05-06-2005 à 17:28:00   

Reply

Marsh Posté le 06-06-2005 à 08:15:24    

essaies ca peut etre:

Code :
  1. UPDATE matable
  2. SET mavaleur=if(mavaleur-10>10,mavaleur-10,mavaleur)
  3. WHERE id=15


pour qu'elle ne monte pas au dessus de 100 etant donne que tu soustrait je vois pas trop comment elle pourait le faire


Message édité par betsamee le 06-06-2005 à 08:18:04
Reply

Marsh Posté le 06-06-2005 à 13:21:10    

Non, en fait, j'ai édité, la deuxième ligne, ça devait être une addition. :D
Bon, en fait, je passe par une clause WHERE toute simple
UPDATE matable SET mavaleur=mavaleur-10 WHERE id=15 AND mavaleur>9
UPDATE matable SET mavaleur=mavaleur+10 WHERE id=15 AND mavaleur<91
 
En fait, c'était surtout pour savoir si il n'y avait pas un fonction toute faite pour ça.
Merci de t'être donné la peine de me répondre.

Reply

Marsh Posté le 06-06-2005 à 15:22:32    

Tiens, voilà, ça marche :D
 

Code :
  1. update tsttbl set val = (select top 1 tt
  2. from
  3. (
  4. select val + 10 tt from tsttbl where id = 1 union select 100 tt
  5. ) yo
  6. order by tt)
  7. where id = 1


 
C'est pas une fonction, c'est c'est plus portable qu'un IF()

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed