Partage
  • Partager sur Facebook
  • Partager sur Twitter

Création d'un nombre

+ jointures

Sujet résolu
    18 janvier 2011 à 17:25:56

    Bonjour les zéros, je maîtrise l'utilisation du langage SQL, seulement j'ai tout de même quelques questions.

    J'aimerai savoir comment faire pour limiter un nombre dans la basse de donnée pour qu'il soit uniquement entre 0 et 100 (en réalité, ce seront des pourcentages).

    Je souhaite aussi qu'il y ait une prise en compte de 3 nombres après la virgule.

    Pourriez-vous m'aider sur ce point ?
    Actuellement, c'est ceci : FLOAT 4,1

    Seulement, le nombre peut être plus grand que 100 (obligé de faire une requête pour mettre le nombre à 100 s'il dépasse (chaque heure je rajoute +2%), et seulement 1 chiffre est pris en compte après la virgule.


    Ensuite, c'est une question pour les jointures.
    J'ai fait une requête pour récupérer les informations d'un membre selon l'id dans l'url, ca c'est ok, seulement j'ai joins à cette requête les joueurs d'un club selon l'id_club du joueur, seulement, il ne ressort que 10 résultats malgré un while..

    Je vous remercie d'avance pour vos éclaircissements.
    • Partager sur Facebook
    • Partager sur Twitter
      18 janvier 2011 à 17:57:32

      Quel SGBDR utilises-tu ? MySQL ?

      Si oui, pourquoi ne pas prendre cela en compte directement dans ta requête de mise à jour ?

      Si non, tu peux utiliser une contrainte CHECK (l'utilisation dépend du SGBDR, mais en général c'est du genre:

      ALTER TABLE <nom_table>
      ADD CONSTRAINT CHECK (<nom_colonne> BETWEEN 0 AND 100);
      


      Tu parles d'une requête SQL et de while, ce sont deux choses qui ne se marrient pas bien en général ... Enfin sauf si c'est juste pour faire un fetch sur une requête. Pourrais-t-on voir le code concerné pour pouvoir mieux t'aiguiller ?

      À bientôt,

      Shepard
      • Partager sur Facebook
      • Partager sur Twitter
        18 janvier 2011 à 18:21:13

        > Je souhaite aussi qu'il y ait une prise en compte de 3 nombres après la virgule.

        FLOAT(5,3)

        Citation : Fash-S

        Seulement, le nombre peut être plus grand que 100 (obligé de faire une requête pour mettre le nombre à 100 s'il dépasse (chaque heure je rajoute +2%), et seulement 1 chiffre est pris en compte après la virgule.



        UPDATE machin SET truc=truc+2 WHERE truc <= 98;
        
        • Partager sur Facebook
        • Partager sur Twitter
          18 janvier 2011 à 18:53:10

          Merci pour vos réponses, je bosse bien sur MySQL, cela affiche bien 3 chiffres après la virgule Lord Casque Noir ;)

          Ca s’arrête par contre à 99.999, pas trop grave, je peux faire une fonction qui va afficher 100 si le nombre est égal à 99.999 ;)

          Par contre j'ai du mal m'exprimer pour le while.
          En faite, j'ai fait une requete, du genre :

          SELECT *, DATE_FORMAT(membre_inscrit, "%d/%m/%Y à %H:%i") AS membre_inscrit,
          	   DATE_FORMAT(membre_derniere_visite, "%d/%m/%Y à %H:%i") AS membre_derniere_visite
                 FROM membres
          	   LEFT JOIN membre_groupe ON membre_groupe.membre_groupe_id_club = membres.membre_id
          	   LEFT JOIN championnat ON championnat.championnat_id = membre_groupe.membre_groupe_championnat
          	   LEFT JOIN joueurs ON joueurs.joueur_id_club = membres.membre_id
          	   WHERE membre_id='.$membre.
          


          Si je fais un while de tout ca, cela m'affiche QUE 10 joueurs du LEFT JOIN, au lieu de TOUS les joueurs..
          Enfin, après, je sais pas si c'est du ressors du PHP ou du SQL, mais de toute facon, il va falloir que je rebosse mes jointures.

          Je mets le sujet quand même en résolue car mon problème principal est résolue, pour celui-ci, je fais une deuxième requete simple et basta ;)
          • Partager sur Facebook
          • Partager sur Twitter
            18 janvier 2011 à 19:10:41

            > Ca s’arrête par contre à 99.999

            Classique, l'arrondi, lol :

            ==> UPDATE machin SET truc=truc+2 WHERE truc <= 98.0001;
            ou ==> UPDATE machin SET truc=truc+2 WHERE truc +2 <= 100;
            • Partager sur Facebook
            • Partager sur Twitter
              18 janvier 2011 à 19:34:49

              Au lieu de faire une requete pour forcer à arrondir à 100, je pense que c'est mieux d'afficher 100 si le nobmre est égal à 99.999 lors de l'affichage d'une requete..

              Economie de requete ^^

              Mon jeu en prends déjà pas mal, autant en éviter un maximum :)

              Dernière question, il se peut que le chiffre dans une BDD soit de 0, logiquement si une requete execute -2 à ce nombre, cela va inserer -2 dans la BDD n'est-ce pas ?

              Si oui, comment limiter cela, autre que passer par une requette qui va elle faire une update à 0 pour tous les nombres en dessous de 0 ?
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                18 janvier 2011 à 19:47:51

                Citation : Fash-S


                Si oui, comment limiter cela, autre que passer par une requette qui va elle faire une update à 0 pour tous les nombres en dessous de 0 ?


                Avec un CASE:
                UPDATE laTable
                SET truck =
                  CASE
                    WHEN truck-2 < 0 THEN 0
                    ELSE truck-2
                  END CASE
                WHERE .....
                
                • Partager sur Facebook
                • Partager sur Twitter
                  18 janvier 2011 à 20:08:55

                  Merci, je pense que c'est ça dont j'ai besoin, merci beaucoup à vous ;)
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Création d'un nombre

                  × 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