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

SQL Firebird Discussion :

problème sur requête


Sujet :

SQL Firebird

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    839
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 839
    Points : 262
    Points
    262
    Par défaut problème sur requête
    bonjour,

    j'ai un probleme avec cette requete: elle me donne une erreur :integer overflow

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select MENUDER.MDLIBELLE, cast(sum(L_ACHAT.LAPRIX * L_ACHAT.LAQTE * (1 - (L_ACHAT.LATAUXREM/100)))  as decimal(15,4)) as MONTANT FROM L_ACHAT
    join ACHAT on ACHAT.ACIDACHAT=L_ACHAT.LAIDACHAT
    join MENUDER on MENUDER.MDIDMDER=ACHAT.ACIDRUBRIC
    group by MENUDER.MDLIBELLE
    order by MONTANT desc,MENUDER.MDLIBELLE
    en castant le taux de remise à decimal(5,2) ca fonctionne, mais les calculs ne sont pas corrects

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select MENUDER.MDLIBELLE, cast(sum(L_ACHAT.LAPRIX * L_ACHAT.LAQTE * (1 - (cast(L_ACHAT.LATAUXREM as decimal(5,2)) /100)))  as decimal(15,4)) as MONTANT FROM L_ACHAT
    join ACHAT on ACHAT.ACIDACHAT=L_ACHAT.LAIDACHAT
    join MENUDER on MENUDER.MDIDMDER=ACHAT.ACIDRUBRIC
    group by MENUDER.MDLIBELLE
    order by MONTANT desc,MENUDER.MDLIBELLE

    bizarre , lorsque je reprends la requete de départ et que j'enlève le calcul de la remise, tout fonctionne bien ?
    Là je ne comprends plus !! et n'arrive pas à dégager de logique.
    je pense que c'est sur la "(1 - (L_ACHAT.LATAUXREM/100)))" qu'il y a un problème.
    Pour info, si je mets 0.00 ou 100.00 à la place de L_ACHAT.LATAUXREM , ca fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select MENUDER.MDLIBELLE, cast(sum(L_ACHAT.LAPRIX * L_ACHAT.LAQTE ) as decimal(15,4)) as MONTANT FROM L_ACHAT
    join ACHAT on ACHAT.ACIDACHAT=L_ACHAT.LAIDACHAT
    join MENUDER on MENUDER.MDIDMDER=ACHAT.ACIDRUBRIC
    group by MENUDER.MDLIBELLE
    order by MONTANT desc,MENUDER.MDLIBELLE
    Si quelqu'un a une idée ?

    merci

  2. #2
    Membre confirmé Avatar de TryExceptEnd
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 501
    Points : 574
    Points
    574
    Par défaut
    Quel est le type de données de la colonne L_ACHAT.LATAUXREM ?
    Si vous êtes libre, choisissez le Logiciel Libre.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 245
    Points : 534
    Points
    534
    Par défaut
    Bonjour,

    Et en écrivant "(1.0 - (L_ACHAT.LATAUXREM/100.0))"?

    André

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    839
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 839
    Points : 262
    Points
    262
    Par défaut Info
    Bonjour,

    Le champ LATAUXREM est un decimal(15,4)


    Merci

  5. #5
    Membre confirmé Avatar de TryExceptEnd
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 501
    Points : 574
    Points
    574
    Par défaut
    Tu doit caster toutes les colonnes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT MENUDER.MDLIBELLE
    , cast(sum(cast(L_ACHAT.LAPRIX as decimal(15,2)) * cast(L_ACHAT.LAQTE as decimal(15,2)) * (1 - (cast(L_ACHAT.LATAUXREM as decimal(15,2)) /100)))  AS decimal(15,4)) AS MONTANT
    FROM L_ACHAT
    Si vous êtes libre, choisissez le Logiciel Libre.

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

Discussions similaires

  1. Problème sur requête SQL (Caféine)
    Par Jean-Pierre49 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/11/2007, 08h19
  2. problème sur requête imbriqué
    Par Dam1en dans le forum Langage SQL
    Réponses: 2
    Dernier message: 21/10/2007, 16h55
  3. Problème sur requête : erreur 1111
    Par tiger33 dans le forum Requêtes
    Réponses: 4
    Dernier message: 25/10/2006, 12h30
  4. problème sur requête ajout
    Par yoruichi93 dans le forum Access
    Réponses: 7
    Dernier message: 10/05/2006, 14h51
  5. Problème sur requête insert mysql
    Par kcizth dans le forum Requêtes
    Réponses: 5
    Dernier message: 04/02/2006, 18h37

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