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 :

Requête renvoie NULL à la place de la valeur


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    .
    Inscrit en
    Juin 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Juin 2014
    Messages : 25
    Points : 33
    Points
    33
    Par défaut Requête renvoie NULL à la place de la valeur
    Bonjour,

    Loin d'être un expert en SQL, j'ai fait une requete des plus basiques qui ne fonctionne pas pour toutes les valeurs :

    J'ai fait une facture en (HTML, PHP, DOMPDF). Pour réaliser cette facture, je vais chercher dans une table TVA les différent taux de tva pour chacun des produits de la facture., jusque là, tout va bien.

    Lorsque je veux la somme totale pour chacun des taux de TVA, ça marche pour certains taux de tva mais pas pour d'autres (cf copies d'écran ci-dessous)

    Fonctionne très bien avec les taux de 20%, 10%, 8,5%, 5,5% et 1,75%
    Nom : Capture d’écran 2023-05-26 à 09.51.26.png
Affichages : 106
Taille : 140,4 Ko

    Renvoie "NULL" avec les taux de 2,1%, 1,05% et 0,9%
    Nom : Capture d’écran 2023-05-26 à 09.51.49.png
Affichages : 112
Taille : 205,0 Ko

    La colonne "montantTva_prodInvoice" est bien évidemment en "FLOAT"

    Il y a évidemment une valeur pour chaque taux de TVA (pour tester)
    Capture d’écran 2023-05-26 à 09.47.08.pdf

    Quelqu'un peut-il m'aider, m'expliquer, me mettre sur la voie SVP.

    Par avance, merci

    François

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 098
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 098
    Points : 8 207
    Points
    8 207
    Billets dans le blog
    17
    Par défaut
    La colonne "montantTva_prodInvoice" est bien évidemment en "FLOAT"
    Il n'y a rien d'évident car normalement pour du monétaire on évite FLOAT et on utilise plutôt DECIMAL

    Tu donnes des captures, ça n'aide pas à reproduire la situation.
    Donne le DDL des tables (CREATE TABLE ...), un échantillon de données représentatif et la requête qui pose problème.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    .
    Inscrit en
    Juin 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Juin 2014
    Messages : 25
    Points : 33
    Points
    33
    Par défaut
    Bonjour Séb et merci de t'être arrêter sur mon soucis.

    Effectivement la solution était juste de changer le type de mes colonnes de "float" en "decimal".

    En revanche, sans vouloir d'embêter, pourquoi avec "Float" ça fonctionne sur certains chiffres et pas sur d'autres ?????

    La requete était toute simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SUM(`montantTva_prodInvoice`) FROM `prodInvoice` WHERE `tva_prodInvoice`=2.1;
    Encore merci

    Merci

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 098
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 098
    Points : 8 207
    Points
    8 207
    Billets dans le blog
    17
    Par défaut
    Avec FLOAT la précision n'est pas exacte, 5.5 peut être représenté en mémoire par 5.500000001, ce qui finit par poser des problèmes d'arrondi ou de comparaison.
    Tant mieux si changer le type de colonne a suffit à corriger ton problème

    DECIMAL => https://dev.mysql.com/doc/refman/8.0...int-types.html
    FLOAT => https://dev.mysql.com/doc/refman/8.0...int-types.html
    Doc MySQL sur le problème => https://dev.mysql.com/doc/refman/8.0...ith-float.html
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    .
    Inscrit en
    Juin 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Juin 2014
    Messages : 25
    Points : 33
    Points
    33
    Par défaut
    Merci pour tes précisions et la lecture

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/03/2022, 18h39
  2. Requête renvoie une valeur nulle
    Par OursTortue dans le forum Langage SQL
    Réponses: 1
    Dernier message: 29/10/2015, 16h02
  3. [MySQL] Tester si une colonne de requête renvoie NULL
    Par CinePhil dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 18/01/2011, 13h28
  4. Requête qui renvoie 'Null'
    Par Invit-é dans le forum VB 6 et antérieur
    Réponses: 14
    Dernier message: 11/06/2007, 17h32
  5. Réponses: 2
    Dernier message: 04/01/2007, 13h31

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