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 Procédural MySQL Discussion :

Hic avec le fait que COUNT() ne retourne pas 0 quand aucun résultat


Sujet :

SQL Procédural MySQL

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 59
    Par défaut Hic avec le fait que COUNT() ne retourne pas 0 quand aucun résultat
    Bonjour à tous!

    Je suis en train de créer un trigger qui permet de générer un champ en concaténant 3 autres champs et un incrément qui indique le nombre d'éléments existants déjà pour un champ donné.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    BEGIN
    DECLARE nb INT;
    SET nb = (SELECT IFNULL(count(*),0) FROM `VPLS_aggregation` WHERE `id_ORT` = NEW.`id_ORT` GROUP BY `id_ORT`);
    SET NEW.`VPLS_ID_aggregation` = CONCAT("21188", LPAD(NEW.`id_ORT`,2,0), LPAD(nb,2,0));
    END
    Le trigger fonctionne bien sauf quand le count(*) retourne.... rien.
    En effet, le count() ne retourne pas 0 s'il ne trouve aucune ligne....

    PI: J'ai essayé en créant une "self" jointure en vain...

    Comment contourner ce problème?

    Merci à vous!

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 59
    Par défaut
    Mea Culpa, le GROUP BY est en trop ici et est l'origine de mon problème...

    La solution:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    BEGIN
    DECLARE nb INT;
    SET nb = (SELECT count(*) FROM `VPLS_aggregation` WHERE `id_ORT` = NEW.`id_ORT`);
    SET NEW.`VPLS_ID_aggregation` = CONCAT("21188", LPAD(NEW.`id_ORT`,2,0), LPAD(nb,2,0));
    END

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

Discussions similaires

  1. [Drupal] qu'est-ce qui fait que développer avec drupal est chaud même pour un dev senior
    Par mapmip dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 23/07/2014, 11h43
  2. Count() ne retournant pas 0
    Par Invité dans le forum Requêtes
    Réponses: 2
    Dernier message: 11/04/2013, 13h41
  3. [Java][debutant]select count(*) ne retourne rien !!
    Par Invité dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 24/01/2007, 11h39
  4. Problèmes avec des nombres... que faire ?
    Par sducos81 dans le forum C++
    Réponses: 6
    Dernier message: 21/07/2005, 13h46
  5. select avec un nombre limité de valeurs retournées
    Par felix79 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 23/12/2004, 15h16

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