Partage
  • Partager sur Facebook
  • Partager sur Twitter

[SQL] Imposer une plage de valeur à un champ

Sujet résolu
    24 février 2006 à 20:20:38

    Bonsoir à tous,

    Je voudrais savoir s'il est possible d'imposer une certaine plage de valeur à un champ dans une bdd sql. Je m'explique:

    Imaginons une requête du type "UPDATE ma_table SET a=a+b". Jusque là, pas de problème...
    Maintenant, je souhaite faire en sorte que ma valeur a ne dépasse pas une valeur que nous nommerons c (que d'originalités :p ) et que la valeur a prenne la valeur c si jamais "a+b>c".
    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      24 février 2006 à 21:32:37

      a ma connaissance on peut pas faire de telle restriction mais si tu met une condition qui update la table que si a+b>c ça peut marcher non ?
      sinon précise un peu plus ton but ;)
      • Partager sur Facebook
      • Partager sur Twitter
        24 février 2006 à 21:43:14

        Oui, cela va fonctionner mais cela impose de faire un SELECT de la valeur a avant de faire l'UPDATE, c'est ce que je cherche à éviter.
        • Partager sur Facebook
        • Partager sur Twitter
          24 février 2006 à 22:01:02

          Lorsque tu créé une ta table tu peux utiliser le type de champ "ENUM" (une recherche google sera facile a faire a ce sujet.

          Sinon si ta table est déjà faite tu fais ça avec php :

          <?php
          $possibilites=array('possibilite0', 'possibilite1', 'possibilite2', 'no_possibilite'); // On liste les possibilités dans un tableau

          if(!array_search($champ_a_verifier, $possibilites){ // si la valeur de $champ_a_verifier n'est aps dans le tableau (donc ce n'est pas un possibilité)
           // Code d'erreur
           }else{
           echo 'Wahoooooooooo, c\'est bon ! ';
           }
          ?>


          Donc on met un tableau de possibilité et on vérifie si la valeur a vérifier est dans le tableau :)

          En espérant t'avoir aidé :)

          @bientôt ;)
          • Partager sur Facebook
          • Partager sur Twitter
            24 février 2006 à 22:13:07

            Je crois que l'on ne s'est pas compris Madyn. Et de toute façon, le problème serait resté le même, il aurait fallu que je fasse un select de ma valeur a pour lui ajouter la valeur b avant de vérifier que c'est une valeur possible.

            Pour le ENUM, pourquoi pas, mais le nombre de possibilités est beaucoup trop grand (de 0 à 20 avec 4 chiffres parès la virgule).

            Merci quand même.

            Edit: j'en profite pour vanter les mérites de la propriété ENUM qui est méconnue et pourtant très pratique quand on veut classer les résultats selon un ordre particulier.
            • Partager sur Facebook
            • Partager sur Twitter
              24 février 2006 à 22:15:55

              Bah tu fais un 'tit code php !

              Désolé en fait j'avais lu que le sujet du message :-°
              • Partager sur Facebook
              • Partager sur Twitter
                24 février 2006 à 22:18:09

                Du php inséré dans la requête sql? Ca marche ça?
                • Partager sur Facebook
                • Partager sur Twitter
                  24 février 2006 à 22:21:09

                  Citation : Yoda54

                  Du php inséré dans la requête sql? Ca marche ça?



                  Bah non mais tu doit bien faire ta requête en automatisant avec un code php, nan ?

                  @+
                  • Partager sur Facebook
                  • Partager sur Twitter
                    24 février 2006 à 23:09:00

                    Bien sûr, mais comme je le disais, le but est d'éviter de faire 2 requêtes si cela est possible.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      25 février 2006 à 16:51:51

                      J'ai fini par trouver: UPDATE ma_table SET a=least(a+b, c)

                      Merci à tous.
                      • Partager sur Facebook
                      • Partager sur Twitter

                      [SQL] Imposer une plage de valeur à un champ

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown