Ho elaborato questo come un metodo semplice per ottenere rapidamente le informazioni sugli utenti per gruppo. È stato assemblato in fretta basandosi sui suggerimenti di altri e di qualcuno che conosce il SQL molto meglio di quanto non farò mai io.
È utile se hai bisogno di clonare un gruppo, applicare le impostazioni di osservazione alle persone già presenti in un gruppo, inviare una email tradizionale a un gruppo, scoprire cosa c’è nei loro campi personalizzati senza scaricare tutti i dati degli utenti, rivelare alcune informazioni a un gruppo selezionato, eccetera.
Puoi personalizzarlo con un bel link diretto all’amministrazione o con i tuoi campi personalizzati, come indicato nei commenti nel codice.
Non sembra esserci un grande repository per le query di Data Explorer qui su Meta al momento. Spero che questo vada bene.
--[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 riga successiva ti fornisce un link diretto al pannello di amministrazione dell'utente
-- concat('/admin/users/',u.id,'/',u.username) AS admin_access_url
-- la riga sottostante con MAX ti permette di estrarre i Campi Personalizzati dell'Utente, replicala come necessario
-- sostituisci 'nome del campo' e "nome visualizzato" con il tuo campo target
-- MAX(CASE ucf.name WHEN 'nome del campo' THEN value END) AS "nome visualizzato"
-- *assicurati che tutti i campi tranne l'ultimo abbiano una virgola dopo di loro*
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