J’ai la requête ci-dessous, qui fonctionne dans l’explorateur de données, mais j’obtiens l’erreur Désolé, une erreur s'est produite. lorsque j’essaie d’utiliser la requête pour attribuer des badges. Est-ce que quelque chose m’échappe ici ? La requête doit correspondre si quelqu’un est membre d’un groupe appelé « chapter_ » ou « meta_chapter_ » et est désigné comme son groupe principal.
SELECT distinct on (u.id)
u.id
FROM users u
INNER JOIN groups g
ON u.primary_group_id = g.id
WHERE g.name LIKE 'chapter_%'
OR g.name LIKE 'meta_chapter_%'
1 « J'aime »
Pour les déclencheurs personnalisés, vous devez ajouter une ligne supplémentaire au début et à la fin. Il y a un exemple dans l’un de mes messages ci-dessus, et vous pouvez trouver plus d’informations sur Creating triggered custom badge queries 
3 « J'aime »
Merci ! Je pense que je vais devoir y jeter un œil après une bonne nuit de sommeil. Ça fait un moment que je n’ai pas utilisé SQL et je suppose que je vais devoir vérifier d’autres exemples et la documentation. Ce qui suit ne fonctionne pas, c’est certain
SELECT ub.id, ub.granted_at, g.name
from user_badges ub
INNER JOIN groups g
ON ub.id = g.id
WHERE g.name LIKE 'chapter_%'
OR g.name LIKE 'meta_chapter_%'
AND (:backfill OR ub.id IN (:user_ids))
Cela déclenche cette erreur, peut-être que je passe les mauvaises informations ou que le nom/la colonne est incorrect(e).
ERROR: column q.user_id does not exist
LINE 11: JOIN users u on u.id = q.user_id
Edit : ah oui, user_id devrait être utilisé quelque part, pas id.
Et comme résultat final, ces badges sont attribués lorsque l’on est dans un groupe dont le nom commence par chapter_ ou meta_chapter.
SELECT distinct on (gu.user_id)
gu.user_id, gu.updated_at as granted_at
FROM group_users gu
INNER JOIN groups g
ON gu.group_id = g.id
WHERE g.name LIKE 'chapter_%'
OR g.name LIKE 'meta_chapter_%'
AND (:backfill OR gu.id IN (:user_ids))
Et celui-ci pour si vous êtes dans un groupe dont le nom se termine par -team.
SELECT distinct on (gu.user_id)
gu.user_id, gu.updated_at as granted_at
FROM group_users gu
INNER JOIN groups g
ON gu.group_id = g.id
WHERE g.name LIKE '%-team'
AND (:backfill OR gu.id IN (:user_ids))
1 « J'aime »