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

Requêtes MySQL Discussion :

Une requête arrondit ma valeur


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Une requête arrondit ma valeur
    Bonjour,

    Mon niveau SQL est limité et je suis confronté à ce pb :

    Je me connecte à une première base de données pour calculer la moyenne des notes :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // Connexion puis :
    $query1 = mysql_query("SELECT AVG(rating) FROM table1");
    $result1 = mysql_fetch_assoc($query1);
    $average_rating = round($result1["AVG(rating)"]/0.5)*0.5;

    J'ai plusieurs enregistrements dans la table.
    rating est de type TINYINT 1
    Un echo me donne 3.5 par exemple.

    Je me connecte à une deuxième base de données pour y copier cette valeur :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Connexion puis :
    mysql_query("UPDATE table2 SET note = '$average_rating'");

    Lorsque je récupère le champs note de table 2 par :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sql = "SELECT * FROM table2";
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
    $data = mysql_fetch_assoc($req);

    Un echo $data['note'] me donne 4 ! (toujours dans le cas où j'avais 3.5 pour $average_rating)
    note est de type TINYINT 1

    Je préfèrerais avoir 3.5 ! Comment ce fait-il que ma donnée soit arrondie ?
    J'ai regardé du côté des type; voici ce que cela me retourne (mais je ne sais pas exploiter cette info)
    echo gettype($data['note']) retourne string
    echo gettype($average_rating) retourne double

    Pouvez-vous m'aider ?

  2. #2
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Saluton,

    Une colonne de type TINYINT reste une colonne qui ne peut recevoir que des valeurs entières ce qui n'est pas le cas de 3.5.

    D'où le problème d'arrondi lors de l'INSERT.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Lol, effectivement, c'était si simple... Merci.

  4. #4
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Nedankinde.

    Tu peux marquer le post s'il te plaît ?
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

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

Discussions similaires

  1. [AC-2003] Renommer une colonne d'une requête avec la valeur d'un champ
    Par constalp dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 11/08/2010, 12h03
  2. Erreur dans une requête avec des valeurs contenant \
    Par KIK83 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 11/12/2009, 16h06
  3. Réponses: 0
    Dernier message: 25/02/2008, 15h31
  4. Réponses: 11
    Dernier message: 21/09/2007, 15h14
  5. Récupurer via une requête SQL la valeur la plus proche
    Par yoda_style dans le forum Langage SQL
    Réponses: 9
    Dernier message: 27/04/2004, 13h52

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