Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/03/2011, 16h34   #1
Nouveau Membre du Club
 
François
Inscription : mars 2008
Messages : 59
Détails du profil
Informations personnelles :
Nom : François
Localisation : France, Ille et Vilaine (Bretagne)

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

Informations forums :
Inscription : mars 2008
Messages : 59
Points : 25
Points : 25
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 :
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!
franquis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 16h56   #2
Nouveau Membre du Club
 
François
Inscription : mars 2008
Messages : 59
Détails du profil
Informations personnelles :
Nom : François
Localisation : France, Ille et Vilaine (Bretagne)

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

Informations forums :
Inscription : mars 2008
Messages : 59
Points : 25
Points : 25
Mea Culpa, le GROUP BY est en trop ici et est l'origine de mon problème...

La solution:

Code :
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
franquis est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h53.


 
 
 
 
Partenaires

Hébergement Web