Partage
  • Partager sur Facebook
  • Partager sur Twitter

requête mysql

remplacer toutes les valeurs d'un champ

    15 septembre 2010 à 11:55:10

    bonjour
    je me remets aux bases de données. il y a 15 ans je travaillais beaucoup avec dbase3+
    là sur un site j'ai besoin de requêtes mysql

    J'ai un champ S1 numérique dans la table tarif et je voudrais remplacer tous les prix de ce champ s1 dans tous les enregistrements de la base par 0.00
    quelle serait la requête si j'ai un formulaire où le champ zero coché la variable $zero est affirmative
    en dbase3+ d'ashton tate c'était

    Citation


    use tarif
    if $zero
    repl all S1 with 0.00
    endi


    D'autre part pour remplacer ce champ par sa valeur augmentée d'un pourcentage
    dans le champ "pourcent" on a mis 10 la variable $pourcen est égale à 10
    quelle est la requête pour remplacer tous les champs S1 par 110% arrondi à 2 chiffres après la virgule
    en dbase c'était

    Citation


    use tarif
    if $pourcent <>0
    repl all S1 with (int(S1*(100+$pourcent))/100
    endi


    au fait où peut-on trouver un récapitulatif clair des requêtes possibles à inclure dans une page php ?

    merci d'avance
    une blonde de 60 berges
    Fran
    :p
    • Partager sur Facebook
    • Partager sur Twitter
      15 septembre 2010 à 13:40:40

      UPDATE table SET champ=[une valeur/un calcul] (WHERE...)


      Ca c'est la forme générale d'une requête SQL pour remplacer la vlaeur d'un champ.

      Pour ta condition $zero, ça doit se faire dans le PHP, pas directement dans la requête.

      Pour faire les requête, le plus simple (je pense) est d'utiliser PDO. Mateo21 en parle dans son tutorial php/mySQL, je te laisse jeter un oeil.

      Enfin, pour les différentes requêtes, tu peux utiliser toutes les requêtes SQL que tu pourrais imaginer. Un petit tutoriel bien fait : http://www.w3schools.com/sql/default.asp

      Voilà, j'espère que ça t'aide !
      • Partager sur Facebook
      • Partager sur Twitter
        15 septembre 2010 à 14:28:16

        merci
        si tu avais la formule pour remplacer
        (int(champ*(100+$pourcent)))/100
        • Partager sur Facebook
        • Partager sur Twitter
          15 septembre 2010 à 14:47:51

          Citation : frannyz

          D'autre part pour remplacer ce champ par sa valeur augmentée d'un pourcentage


          Si ton champs se nomme "champ" que tu veux augmenter de 10% :
          update latable set champ = champ + champ * 10/100
          
          • Partager sur Facebook
          • Partager sur Twitter
            16 septembre 2010 à 23:21:50

            on n'augmente pas souvent d'un pourcentage rond comme 10 mais souvent d'un chiffre avec décimales
            je voulais juste connaitre le code pour avoir un chiffre entier dans ce cas c'était int et
            dans (int(champ*(100+$pourcent)))/100
            si tu augmente de 1.9% par exemple
            et que la valeur du champ soit de 92.23
            tu as besoin du résultat de 92.23*101.9% avec 2 décimales
            mais si tu n'utilise pas la formule avec l'entier tu aura
            93.98237
            alors que
            l'entier de 92.23*101.9 est 9398
            et 9398/100=93.98
            et normalement même si tu n'affiche que 2 chiffres, il y en a plus et ça créé de mauvais résultats lors des opérations ultérieures.
            lors des additions de plusieurs champs par exemple
            C'est une façon d'obtenir un arrondi . S'il y en a d'autre, je suis preneuse

            quelqu'un a-t-il le code mysql correspondant
            merci d'avance
            Fran
            • Partager sur Facebook
            • Partager sur Twitter
              16 septembre 2010 à 23:36:40

              Utilise le bon type si tu veux garder deux chiffres après la virgule, c'est-à-dire DECIMAL ou NUMERIC
              • Partager sur Facebook
              • Partager sur Twitter
                17 septembre 2010 à 15:39:08

                merci je n'avais pas compris que ça s'arrondissait automatiquement aux 2 décimales
                j'ai créé une table appellée essai s'appelant table avec un champs numérique calcul decimal 10,2
                j'y ai inséré 3 enregistrements
                quand j'écris la requête
                UPDATE 'essai' SET calcul=calcul*105,24%
                UPDATE 'essai' SET calcul=calcul*105%
                UPDATE 'essai' SET calcul=calcul*105.24%

                j'ai des messages d'erreur de syntaxe. j'ai fait des google-recherches je ne trouve pas la bonne syntaxe
                j'ai aussi mis le calcul de pourcentage entre (), [] item les messages d'erreur
                impossible de trouver le bon site qui m'indique les syntaxe de calcul lambda
                merci d'avance
                Fran
                • Partager sur Facebook
                • Partager sur Twitter
                  17 septembre 2010 à 15:43:23

                  Ta syntaxe d'UPDATE est à revoir. On n'utilise jamais des guillemets pour entourer le nom de la table et surtout, ton SGBDR ne peut pas deviner ce que tu veux dire par "105,24%". Tu dois l'écrire en décimal et utiliser le point pour séparer tes décimales de la partie entière. La requête devrait ressembler à ceci :

                  UPDATE essai
                  SET calcul = 1.0524*calcul;
                  
                  • Partager sur Facebook
                  • Partager sur Twitter

                  requête mysql

                  × 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