Bonjour,
Après avoir chercher vainement sur ce forum, je pose tout de même mon problème pour amélioration de la solution que j'ai écrite.
J'ai une table T1 qui a en autre une colonne "typeMicroorganimes" ayant pour contenu des chaines de caractères de la forme "bactéries;levures;phages" ou "bactéries;champignons filamenteux;levures;plasmides" ou "levures". En fait pour un enregistrement donné ce champ est multivalué, contient des types de microorganismes séparées par des ";"
voici une partie du contenu de la table T1
NoCollection | typeMicroorganimes
1 |bactéries;levures;phages
2 |bactéries;champignons filamenteux;levures;plasmides
3 |levures
4 |champignons filamenteux;levures
Mon besoin est d'extraire la liste de tous les types de microorganismes de la colonne. Remarque ce champ peut être vide ou il peut contenir un à n types de microorg ,soit 0 à n-1 ";"
J'ai déjà réussi à extraire le 1ier type de microorg de tous les enregistrements par la requête suivante :
select substring_index(typeMicroorganimes, ';',1) as Micro from T1 group by Micro
le résultat me donne
Micro
bactéries
champignons filamenteux
levures
Comment améliorer cette requête pour que "plasmides" et "phages" soient dans la liste? en d'autres termes comment, dans le fonction substring_index, on peut faire varier le nombre d'occurences de délimiteur en fonction du nombre de ";" de l'enregistrement?
A moins qu'il y ait une toute autre solution?
Merci d'avance pour les futures réponses.
A+
Partager