PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 21/01/2011 13:03:21

frantz
Membre

liste des membres d'un groupe

Bonjour,

je cherche à récupérer tous les noms des membre d'un groupe (role) donné.

Merci d'avance.

Hors ligne

#2 21/01/2011 14:49:21

Marc Cousin
Membre

Re : liste des membres d'un groupe

Cette information est stockée dans pg_auth_members. Il faudra la jointurer avec pg_roles (sur la colonne cachée oid).


Marc.

Hors ligne

#3 21/01/2011 14:55:56

frantz
Membre

Re : liste des membres d'un groupe

C'est effectivement dans ces tables et sur cet attribut qu'avaient abouti mes recherches.

Malheureusement, mes connaissances en SQL ne sont plus toutes fraîches  et je ne sais plus faire :-(

Hors ligne

#4 21/01/2011 15:02:21

Marc Cousin
Membre

Re : liste des membres d'un groupe

SELECT grantor.rolname as grantor, member.rolname as member from pg_auth_members join pg_roles member on (pg_auth_members.member=member.oid) join pg_roles grantor on (pg_auth_members.grantor=grantor.oid);


Marc.

Hors ligne

#5 21/01/2011 15:22:41

frantz
Membre

Re : liste des membres d'un groupe

Ta requête me donne la liste de tous les noms des membre de tous les groupes avec leur grantor.
Or j'aurais besoin de la liste de tous les noms des membre d'un groupe donné. Je n'ai pas besoin
de l'information sur le grantor.

Hors ligne

#6 21/01/2011 15:24:36

Marc Cousin
Membre

Re : liste des membres d'un groupe

Effectivement, je l'ai fait un peu rapidement :

SELECT role.rolname as role, member.rolname as member from pg_auth_members join pg_roles member on (pg_auth_members.member=member.oid) join pg_roles role on (pg_auth_members.roleid=role.oid);

Mais vous auriez pu le corriger vous même, le passage de l'un à l'autre est trivial.


Marc.

Hors ligne

#7 21/01/2011 15:49:41

frantz
Membre

Re : liste des membres d'un groupe

Bon ça n'est pas encore ça. Là ça donne tous les groupes avec tous leurs membres.

Je voudrais obtenir les membres pour un seul groupe dont je mettrais le nom dans la requête.

En me basant sur ta requête et pour un groupe appelé legroupe, la requêtre suivante fonctionne,
mais il y a sans doute plus simple :

select member from (SELECT role.rolname as role, member.rolname as member from pg_auth_members join pg_roles member on (pg_auth_members.member=member.oid) join pg_roles role on (pg_auth_members.roleid=role.oid) ) as membres where role='legroupe';

Hors ligne

#8 21/01/2011 15:55:05

Marc Cousin
Membre

Re : liste des membres d'un groupe

select member.rolname as member from pg_auth_members join pg_roles member on (pg_auth_members.member=member.oid)
where pg_auth_members.roleid in ( select oid from pg_roles where rolname = 'legroupe');


Marc.

Hors ligne

#9 21/01/2011 15:59:04

frantz
Membre

Re : liste des membres d'un groupe

Effectivement, c'est plus simple et ça fonctionne !

Merci beaucoup !!

:-D

Hors ligne

Pied de page des forums