8816 sujets

Développement web côté serveur, CMS

Bonjour à tous
J'ai une table Members qui contient les membres de l'association avec un identifieur unique mbID
J'ai par ailleurs une table Groups qui désigne les groupes de membres avec un identifieur unique groupID
Comme un membre peut appartenir à plusieurs groupes, j'ai une table MemberGroups dont les lignes comportent les couples mbID, groupID
Si j'écris le requête suivante

SELECT mb.mbID,
     GROUP_CONCAT(mbg.groupID ORDER BY mbg.groupID SEPARATOR ';')
FROM Members AS mb
LEFT JOIN MemberGroups AS mbg
     ON mbg.mbID = mb.mbID
WHERE mb.mbID = 'xxx'

J'obtiens bien l'identifieur xxx et une chaîne de caractères contenant tous les groupes auxquels appartient le membre correspondant.

Je veux obtenir la liste de tous les membres avec leurs groupes d'appartenance.

Je constate que si je supprime la ligne WHERE mb.mbID = 'xxx' je n'obtiens pas la liste désirée, mais une seule ligne qui comprend le premier membre de la liste et la liste concaténée de tous les groupes qui existent dans la table.

Je pense comprendre pourquoi ça me donne ce résultat, mais je ne trouve pas le moyen d'obtenir la liste que je désire.

Auriez vous une idée de la façon de faire ?
Merci pour votre aide