Requete renvoie NULL à la place de la valeur

Résolu
fra340 Messages postés 10 Date d'inscription lundi 30 novembre 2020 Statut Membre Dernière intervention 27 mai 2023 - 26 mai 2023 à 11:09
fra340 Messages postés 10 Date d'inscription lundi 30 novembre 2020 Statut Membre Dernière intervention 27 mai 2023 - 27 mai 2023 à 00:59

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%

Renvoie "NULL" avec les taux de 2,1%, 1,05% et 0,9%

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

Il y a évidemment une valeur pour chaque taux de TVA (pour tester)

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

Par avance, merci

François

Macintosh / Safari 16.3

4 réponses

yg_be Messages postés 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471
26 mai 2023 à 11:28

bonjour,

Tu n'as pas précisé le type du champ sur lequel tu faisais le WHERE.

Si tu veux enregistrer des valeurs exactes, tu dois utiliser DECIMAL, et pas FLOAT.

Peux-tu partager du texte, plutôt que des images?

0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
26 mai 2023 à 11:31

Bonjour,

Dans ta table tu n'as que les lignes qui sont dans ta capture écran ou il y en a d'autres ?

Quelle est la structure de ta table ( et plus particulièrement le "type" de champ que tu as mis pour ta colonne tva et montant )

NB: Penses à poster tes requêtes correctement sur le forum en utilisant l'icone prévue pour poster du code au lieu de nous mettre des images que l'on ne peut pas utiliser pour "copier/coller" si besoin.


0
fra340 Messages postés 10 Date d'inscription lundi 30 novembre 2020 Statut Membre Dernière intervention 27 mai 2023
Modifié le 26 mai 2023 à 12:01

Bonjour Jordane et merci de m'aider.

Dans la table, ce sont les seules lignes existantes.

Les colonnes dont tu me parles sont de type "Float". Je vais tester avec le type "décimal".

Désolé pour les copies d'écran, je pensais que ce serait plus parlant.

Bon je viens de modifier le type" float" en "décimal" pour les colonnes"montantTva_prodInvoice" et "tva_prodInvoice" : Et eureka, ça marche !!!!

Ma requête est toujours toujours la même à savoir :

SELECT SUM(`montantTva_prodInvoice`) FROM `prodInvoice` WHERE `tva_prodInvoice`=2.1; 

Un grand merci Jordane.

Mais alors, pourquoi ça fonctionne pour certains chiffres à virgule et pas d'autres ???

Encore merci pour ton aide.


François

0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
26 mai 2023 à 12:20

Ca vient de la "précision" (l'approximation décimale) du float.

C'est un "bug" connu dans l'informatique depuis des décennies...

0
fra340 Messages postés 10 Date d'inscription lundi 30 novembre 2020 Statut Membre Dernière intervention 27 mai 2023
27 mai 2023 à 00:59

Encore un grand merci

François

0