8820 sujets

Développement web côté serveur, CMS

Bonjour à tous
J'ai une connaissance très limitée du SQL, c'est pourquoi j'aimerais de l'aide sur le problème suivant:
- J'ai une table Members qui référence les membres de l'association, dont l'identifieur unique est mbID
- J'ai une table Groups qui référence les différents groupes qui existent au sein de l'association, dont l'identifieur unique est groupID
- J'ai une table MemberGroups qui liste les couples mbID/groupID, ce qui permet de retrouver tous les membres qui appartiennent à un groupe

Ma question:
quel est le moyen le plus simple d'avoir la liste des membres qui appartiennent à la fois à group1 et group2 ?
Pour l'instant j'ai écrit

SELECT mb.firstName, mb.lastName
FROM Members AS mb
WHERE mb.mbID IN (
    SELECT mbg.mbID
    FROM MemberGroups AS mbg
    WHERE mbg.groupID = 'group1'
)
AND mb.mbID IN (
    SELECT mbg1.mbID
    FROM MemberGroups AS mbg1
    WHERE mbg1.groupID = 'group2'
)

J'obtiens bien le résultat souhaité, mais j'ai le sentiment qu'il doit y avoir une façon plus simple d'obtenir ce résultat, d'autant que j'ai parfois besoin d'obtenir la liste des membres qui appartiennent à 3 groupes, ce qui fait un code très lourd.
Merci pour vos conseils.
Modifié par PapyJP (12 Mar 2026 - 14:23)
Bonjour,

SELECT mb.firstName, mb.lastName
FROM Members  mb
LEFT JOIN MemberGroups mbg ON  mbg.groupID = mb.mbID
WHERE mbg.groupID = 'group1' AND mbg1.groupID = 'group2'


Quelque chose comme ça devrait répondre au problème