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

PHP & Base de données Discussion :

La fonction MIN() sur 3 champs [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    1 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 125
    Par défaut La fonction MIN() sur 3 champs
    Salut

    J'utilise la fonction min() sur 3 champs.
    Mais certains champs sont vide (donc "NULL" ou "" ou "0").

    Et donc la fonction min() n'est plus efficace.

    Par exemple.

    Voila un enregistrement :
    Apres la fonction effectué sur toto, elle renvoie "vide" alors que je voudrai 5.

    Actuellement, au lieu de vide, j'utilise 'O' (o majuscule), ce qui est pas terrible


    Merci

  2. #2
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Par défaut
    Il faut ajouter la fonction IFNULL sur chacun des arguments pour tester si la valeur est à NULL, car si NULL est argument d'une fonction, elle renvoie généralement NULL.
    http://dev.mysql.com/doc/refman/5.0/...functions.html
    Exemple :
    SELECT MIN(IFNULL(VAR1; 0), IFNULL(VAR2; 0), IFNULL(VAR3; 0))

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    1 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 125
    Par défaut
    T'a tester IFNULL avec MIN?
    Car de mon coté cela ne marche.
    juste la simple requete suivante devrai retourné 10 par exemple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT MIN(50,IFNULL(10,0))
    A moins que j'ai fais une faute d'inattention

  4. #4
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Par défaut
    En fait, l'erreur n'est pas dans l'utilisation de ifnull, mais dans min(). Min() s'utilise sur une expression, pas sur une liste de valeurs. Elle va donc renvoyer le minimum d'un champ ou du fonction appliquée par un champ, exemple : select min(ifnull(monchamp), 0) from matable;

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    1 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 125
    Par défaut
    select min(ifnull(monchamp), 0) from matable
    Mais justement, je ne veux pas sur un champ mais sur un enregistrement

    voila le resultat de ma requete "select * from fournisseur where nom = toto"

    Et j'aimerai avoir le minimum entre ces 3 colonnes (par exemple dans ce cas, je voudrai avoir 5 et non pas "null"

    Merci

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    1 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 125
    Par défaut
    Bon j'ai crée ma fonction min
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function minumum($prix1,$prix2,$prix3)
    {
     
        $prix = array($prix1,$prix2,$prix3);
        sort ($prix);
        return $prix[0];
    }
    appelle de la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    minumum($Prix_fourni1,$Prix_fourni2,$Prix_fourni3);
    Par contre, dans ma BDD, quand un champ est null, j'ai mis la valeur par defaut "vide" car sinon la fonction sort() comptabilise 0
    C'est pas clair tout ca

    Bon si vous voulez une explication plus clair, dite le moi

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

Discussions similaires

  1. Fonction Year() Sur un champs d'un Dcount()
    Par niamo dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 21/07/2010, 14h12
  2. fonction cumul sur un champ de sous formuliare
    Par patmar83 dans le forum VBA Access
    Réponses: 1
    Dernier message: 20/01/2010, 12h54
  3. Fonction match sur 2 champs
    Par habasque dans le forum R
    Réponses: 0
    Dernier message: 09/07/2009, 10h07
  4. Fonction zoom sur un champ texte
    Par Décibel dans le forum VBA Access
    Réponses: 6
    Dernier message: 04/07/2008, 20h32
  5. [Requête] fonction Max sur 2 champs
    Par GIPPE dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 17/01/2007, 09h59

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