- Ymox,
Bonsoir tout le monde
Ces temps, j’ai un peu l’impression de jouer aux papous, avec MySQL. Et je ne m’en sors pas
Dans le cadre d’une organisation avec aussi une structure scolaire, j’ai une base de données où il y a des personnes, ainsi que des rôles possibles pour celles-ci. Parmi ces rôles, il y a Membre et Elève.
En diverses occasions, il faut pouvoir exporter les informations, et c’est là qu’un cas m’étant problématique apparaît : l’export pour l’envoi des bulletins de versement pour les cotisations. Ces cotisations, les membres les doivent, sauf s’il s’agit d’élèves. Il me faut donc les personnes ayant le rôle Membre, mais pas le rôle Elève. Et je n’ai pas tous les cas en tête, mais il risque d’y avoir des cas plus complexes, comme récupérer des personnes ayant deux rôles mais pas deux autres.
Si je n’ai pas trop de peine à imaginer la requête pour sélectionner les membres ayant un ou plusieurs rôles spécifiques (cf. ci-dessous), je ne vois pas comment je peux effectuer l’exclusion de rôle(s) défini(s).
Est-ce que quelqu’un pourrait m’expliquer comment faire ?
Merci d’avance
SELECT
m.*
FROM
membre m
INNER JOIN
membre_role mr
ON
m.id = mr.membre_id
INNER JOIN
role r
ON
mr.role_id = r.id
AND r.name IN ( les noms des rôles voulus — sans quoi j'aurais omis cette jointure "inutile" )
Plus ou moins lié, est-ce que quelqu’un aurait un exemple d’UI simple et pratique pour proposer ce genre de filtre ? J’avais pensé à une liste de "cases à cocher ternaires", qui me semblait le plus compact, et selon l’affichage, le plus compréhensible. Moins recherché, deux cases à cocher (sélectionné, exclu) avec du JavaScript qui empêche les deux d’être cochées en même temps, mais pas les deux d’être décochées ("pas important"), mais avec une surcouche graphique existante, ce sera probablement mieux. Une version avec trois boutons radio n’irait pas pour les utilisateurs cible — et je ne veux pas de valeur qui dit "on n’a pas choisi ce rôle", dans ce cas, on n’envoie rien.