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 :

Pb requete de base


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 14
    Par défaut Pb requete de base
    Bonjour,
    J'ai un pb sur avec une requete qui ne retourne rien.
    L'action est simple une table catalogue avec une entree prix de type float valeur 5.3 et une autre 5.
    Avec la requete ci-dessous je n'ai pas de retour sur l'entree 5.3 et avec la requete sur un 5 j'ai bien un retour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM `catalogue` WHERE `prix` ='5.3'
    Je dois passer à côté d'un truc énorme mais je cherche depuis 2jours et je trouve pas :o[

    Merci de votre aide

  2. #2
    Membre chevronné Avatar de binouzzz19
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    385
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 385
    Par défaut
    Salut,

    SELECT * FROM `catalogue` WHERE `prix` ='5.3'
    J'imagine que ton prix est de type numérique (donc il faut que tu enlèves les '' autour de 5.3.

    De plus, as-tu vérifier que ton prix n'était pas de type small int (et du coup empêche les float de fonctionner) ...

    Cdlt

  3. #3
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 936
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 936
    Par défaut
    Citation Envoyé par suprateam Voir le message
    Je dois passer à côté d'un truc énorme
    Euh... oui : un type numérique ne nécessite pas de quote dans une requête.

    En codant tu fais référence à une chaine.
    MySQL s'en accommode bien pour une valeur entière '5' (peut-être effectue t'il un cast de sa propre initiative .), mais dès qu'il y a des décimales, bah ça marche plus

  4. #4
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 14
    Par défaut Merci
    Un grand merci je savais bien que je passais à côté d'un truc énorme !!!

  5. #5
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 14
    Par défaut dommage
    Je viens de faire un test et c'est pareil avec ou sans les ' ' la requete ne donne rien (même pas d'erreur) .
    Du moment que j'ai un chiffre apres le . pas deresultat

    Et mes entrées sont bien en float .

    Grrr

  6. #6
    Membre émérite Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Par défaut
    Bonjour!

    Tu as bien délimité le float à un? Donc à une décimale? Sinon essayer :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM `catalogue` WHERE `prix` =5.30

  7. #7
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 14
    Par défaut
    Citation Envoyé par obito Voir le message
    Bonjour!

    Tu as bien délimité le float à un?
    Que veux-tu dire par "délimité float à un"

  8. #8
    Membre émérite Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Par défaut
    Je viens de lire sur la doc mySQL que lorsque tu déclare un champ de type float tu précise aussi le nombre après la virgule. L'as tu fait? Parce que sinon j'imagine que par défaut il prends deux chiffres après la virgule mais je ne suis sur de rien

  9. #9
    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 : 73
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    Saluton,
    La voilà donc la doc
    Si le mot clé FLOAT est utilisé pour une colonne sans précision supplémentaire, MySQL utilise quatre octets pour stocker les valeurs.
    Une syntaxe alternative existe aussi, elle utilise deux paramètres optionnels après le mot clé FLOAT.
    Avec cette option, le premier nombre représente toujours la taille de stockage nécessaire pour la valeur, et le second nombre représente le nombre de chiffres à stocker et afficher, après la virgule décimale (comme pour les types DECIMAL et NUMERIC).
    Lorsque MySQL stocke un nombre pour une telle colonne, et que cette valeur a plus de décimales que requis, la valeur est arrondie pour éliminer les chiffres surnuméraires.
    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)

  10. #10
    Membre chevronné Avatar de binouzzz19
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    385
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 385
    Par défaut
    As-tu essayé avec une virgule au lieu du point ?

    Sinon essaye cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM `catalogue` WHERE `prix` =CAST(5.30 AS DECIMAL(3.2))

  11. #11
    Membre émérite Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Par défaut
    Citation Envoyé par binouzzz19 Voir le message
    As-tu essayé avec une virgule au lieu du point ?

    Sinon essaye cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM `catalogue` WHERE `prix` =CAST(5.30 AS DECIMAL(3.2))
    Ca me semble bon ca ! Sinon question bête : Pourquoi avoir choisi un float au lieu de décimal?

    Bref celle de binouzzz19 me semble bien

  12. #12
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 14
    Par défaut
    La virgule avait le même effet.
    Je viens de forcer le type a varchar(10) et ça fonctionne
    Je débute et comme vous pouvez le voir j'ai des pb avec les types

    Merci à tous

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/04/2006, 10h28
  2. Réponses: 2
    Dernier message: 10/11/2005, 16h59
  3. [Débutant] Requete multi-bases
    Par DiGueDao dans le forum SQL
    Réponses: 3
    Dernier message: 28/08/2005, 19h19
  4. optimisation requetes avec base de données
    Par flogreg dans le forum Décisions SGBD
    Réponses: 9
    Dernier message: 05/07/2005, 14h54
  5. Réponses: 3
    Dernier message: 17/05/2004, 17h28

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