Créer un rapport d'utilisateurs incluant des champs personnalisés

J’ai conçu cela comme un moyen simple d’obtenir rapidement les informations des utilisateurs par groupe. Ce script a été assemblé à partir des suggestions d’autres personnes et de celles d’une personne qui connaît le SQL bien mieux que moi ne le ferai jamais.

Cela s’avère utile si vous devez cloner un groupe, appliquer des paramètres de suivi aux personnes déjà dans un groupe, envoyer un e-mail traditionnel à un groupe, découvrir ce qui se trouve dans leurs champs personnalisés sans tout vider les données des utilisateurs, révéler certaines informations à un groupe sélectionné, etc.

Vous pouvez personnaliser cela avec un lien direct vers l’administration ou vos champs personnalisés, comme indiqué dans les commentaires du code.

Il ne semble pas que nous ayons un excellent référentiel pour les requêtes Data Explorer ici sur Meta actuellement. J’espère que c’est acceptable ici.

--[params]
-- string :group_name

With included_users AS (
SELECT
gu.user_id
FROM group_users gu
JOIN groups g
ON g.id = gu.group_id
WHERE g.name = :group_name
),
e AS (
  SELECT email, user_id
  FROM user_emails u
  WHERE u.primary = true
)

  SELECT
    u.id AS user_id, u.name, u.username, e.email
    -- la ligne suivante vous donne un lien direct vers le panneau d'administration de l'utilisateur
    -- concat('/admin/users/',u.id,'/',u.username) AS admin_access_url
    -- la ligne ci-dessous avec MAX vous permet d'extraire les champs personnalisés des utilisateurs, à dupliquer selon le besoin
    -- remplacez 'nom du champ' et "nom d'affichage" par votre champ cible
    -- MAX(CASE ucf.name WHEN 'nom du champ' THEN value END) AS "nom d'affichage"
    -- *assurez-vous que tous les champs sauf le dernier ont une virgule après eux*

  FROM users as u
  LEFT JOIN user_custom_fields AS ucf on u.id = ucf.user_id
  RIGHT JOIN e on u.id = e.user_id
  RIGHT JOIN user_fields AS uf on concat('user_field_', uf.id) = ucf.name
  WHERE u.id IN (SELECT user_id FROM included_users)
  GROUP BY u.id, e.email
  ORDER BY u.username asc
5 « J'aime »