Bonjour
Donc j'ai deux tables :
une table utilisateur , qui contien diverse information sur un utilisateur donc sont identifiant
une table groupe_util , qui contien un identifiant de groupe , un nom de groupe et une chaine.
Cette chaine c'est les identifiants des utilisateur qui apartienne au groupe , chaque identifiant est separer par une virgule (ça forme une liste)
Malheuresement , je ne peux pas changé la structure de la base.
Donc mon but est de selectionné l'identifiant de l'utilisateur et l'identifiant du ou des groupe au quel il apartient (avec cette modelisation , un utilisateur peu etre dans plusieur groupe)
Donc j'ai fait la requette suivante
SELECT util_id, gr_util_id
FROM utilisateur
LEFT JOIN groupe_util ON util_id IN (gr_util_liste)
J'ai pensé qu'il falait utilisé l'operateur IN puisse ce que gr_util_liste est une liste d'elements separer par ,
Malheuresement ça marche pas , mais ce qui est plus bizard , c'est que ça marche a moitié.
Je m'explique
J'ai 4 utilisateur , numeroté de 1 à 4
J'ai deux groupe 1 et 2
dans le groupe 1 il y a l'utilisateur 1
Dans le groupe 2 il y a l'utilisateur 2 et 3 (donc gr_util_liste = "2,3")
Quand je fait ma selection j'ai comme resultat:
1 apartien au groupe 1
2 apartien au groupe 2
3 apartien a aucun groupe (pas normal)
4 apartien a aucun groupe (normal)
Ce qui est bizard c'est qu'il reconnait que 2 est dans les groupe 2 , mais il reconnait pas 3
De plus , quand on inverce l'ordre de la liste , et ba il reconnait 3 dans le groupe 2 mais pas 2
Donc il prend que le premier element de la liste.
J'ai pas mal cherché , mais j'ai pas trouvé la raison du pourquoi.
Apres j'ai jamais utilisé de IN sur un champ du table , j'ai toujours fait avec une sous requete , donc ça doit venir de là , mais j'ai plus de piste ou cherche
Es ce que quelqu'un a une idée ?
Merci