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 :

Problème de décimales dans une vue


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Homme Profil pro
    Responsable R&D
    Inscrit en
    Novembre 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 64
    Points : 43
    Points
    43
    Par défaut Problème de décimales dans une vue
    Bonsoir,
    dans une vue je declare un champ comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ROUND((`orders_temp`.`total_order` - `orders_temp`.`total_discounted`) * sum(`order_lines_temp`.`subtotal_discounted`)/ `orders_temp`.`total_order`,2) AS `remiseGlobale`
    le probleme c'est que ca me retourne systematiquement un entier et en prime quand je fais le total de mes enregistrement la sommes de ce champ est cause.

    ici par exemple j'ai 2 enregistrements retournés : 16 et 283 pour et je dois avoir 300 en total.

    pour corriger cela je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ROUND((`orders_temp`.`total_order` - `orders_temp`.`total_discounted`) * sum(`order_lines_temp`.`subtotal_discounted`) * 1.00000000000000001 / `orders_temp`.`total_order`,2) AS `remiseGlobale`
    là c'est juste mais pas recommandé mais j'ai 16.54 et 283.56 soit bien 300 au total.
    Quelqu'un a une idée pour avoir 2 chiffres aprés la virgule ?

    Merci

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Il faut "CASTer" les colonnes pour leur donner le type DECIMAL.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ROUND(CAST(orders_temp.total_order - orders_temp.total_discounted) AS DECIMAL(10, 2)) * CAST(sum(order_lines_temp.subtotal_discounted) AS DECIMAL(10, 2))/ CAST(orders_temp.total_order AS DECIMAL(10, 2)),2) AS remiseGlobale
    Tu devrais utiliser des alias dans toute requête utilisant plus d'une table ; ça rend la requête plus facile et agréable à écrire, lire, débugguer.

    Supprime ces saloperies d'apostrophes inversées pénibles à écrire quand elles ne sont pas utiles, c'est à dire quand les colonnes sont correctement nommées, sans caractères interdits et n'étant des mots réservés du SQL.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre du Club
    Homme Profil pro
    Responsable R&D
    Inscrit en
    Novembre 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 64
    Points : 43
    Points
    43
    Par défaut
    Merci CinePhil pour l'info de casting, je me demandais justement si il y avait moyen de spécifier le type de champ dans une vue et le casting est une alternative.
    Par contre ma vue d'origine marchait sans problème sous MySQL et c'etait sous SQLLite qu'elle ne marchait pas.
    et le casting en DECIMAL(10, 2) ne resolvait pas le problem, j'ai du caster en float pour que ça marche....

    Merci encore

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

Discussions similaires

  1. [10g] Problème de doublons dans une vue
    Par NFHnv dans le forum SQL
    Réponses: 2
    Dernier message: 14/02/2013, 14h02
  2. Réponses: 4
    Dernier message: 30/06/2011, 18h55
  3. [SQL2005] [TSQL]Problème d'une CTE dans une vue
    Par mgonc dans le forum MS SQL Server
    Réponses: 15
    Dernier message: 19/10/2009, 11h21
  4. [CR XI] Problème de formatage de décimal dans une formule
    Par Jsh dans le forum Formules
    Réponses: 7
    Dernier message: 25/02/2008, 22h43
  5. Problème de décimales dans une requête
    Par pellec dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 21/07/2006, 08h15

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