IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

probleme arithmetique


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 616
    Par défaut probleme arithmetique
    bonjour

    j'ai deux variables aléatoires
    $a = 10 et $b=5
    si je fais $a-$b
    resultat = 5
    par contre et voici mon probleme :
    si $a=0 et $b=5, alors $a-$b
    resultat = -5
    sauf que je ne veux pas de chiffre negatif
    donc le resultat devrait etre 0

    ce calcul se fait dans une requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $req_modif = "UPDATE ART SET ARTREEL = ARTREEL - '$nb_art'
    où ARTREEL = 0 et $nb_art= 5
    comment obtenir 0 en resultat quand ARTREEL = 0

    merci de votre aide

  2. #2
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    Salut !


    Tu peux toujours mettre ARTREEL en unsigned : http://www-fr.mysql.com/doc/fr/Column_types.html
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2002
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 5
    Par défaut
    essaie avec la requete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req_modif = "UPDATE ART SET ARTREEL = ABS(ARTREEL - '$nb_art')
    je ne suis pas sur du résultat car cette fonction mathématique est utilisable dans les requetes SELECT

  4. #4
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    le risque avec ça, c'est que ABS(-10) = 10... donc tu risques de te retrouver avec des resultats aléatoires !!
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  5. #5
    Membre éprouvé Avatar de lper
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    398
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 398
    Par défaut
    Bonjour
    tu peux faire en 2 requêtes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    UPDATE ART SET ARTREEL = ARTREEL - '$nb_art'  
    where ARTREEL > $nb_art
    UPDATE ART SET ARTREEL = 0  
    where ARTREEL <= $nb_art

  6. #6
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Ca devrait fonctionner avec CASE mais je ne suis pas certain que ça fonctionne si simplement (j'ai rien sous la main pour tester ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req_modif = "UPDATE ART SET ARTREEL = CASE WHEN (ARTREEL - '$nb_art') <= 0 THEN 0 ELSE (ARTREEL - '$nb_art') END"
    Ou alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $req_modif = "UPDATE ART SET ARTREEL = (
                                    SELECT CASE WHEN (ARTREEL - '$nb_art') <= 0 
                                                          THEN 0 
                                                          ELSE (ARTREEL - '$nb_art') 
                                                           END
                                      FROM art art_b
                                    WHERE art.rowid = art_b.rowid"

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 616
    Par défaut
    merci pour vos reponse
    j'ai finalement poté pour 2 requetes

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme de rafraichissement d'un BDGrid
    Par marmotte dans le forum Bases de données
    Réponses: 10
    Dernier message: 28/05/2004, 18h07
  2. Réponses: 2
    Dernier message: 30/05/2002, 08h54
  3. Probleme sur les chaines de caractere
    Par scorpiwolf dans le forum C
    Réponses: 8
    Dernier message: 06/05/2002, 19h01
  4. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50
  5. [Kylix] Probleme de nombre flottant!!
    Par yopziggy dans le forum EDI
    Réponses: 5
    Dernier message: 02/05/2002, 10h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo