Consulta de badge funcionando no explorer mas não no SQL do badge?

Tenho a consulta abaixo, que funciona no explorador de dados, mas recebo o erro Desculpe, ocorreu um erro. ao tentar usar a consulta para atribuir emblemas. Está faltando algo aqui? A consulta deve corresponder se alguém for membro de um grupo chamado “chapter_” ou “meta_chapter_” e atribuído como seu grupo 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 curtida

Para os Gatilhados Personalizados, você precisa adicionar uma linha extra no início e no final. Há um exemplo em uma postagem minha acima, e você pode encontrar mais informações em Creating triggered custom badge queries :+1:

3 curtidas

Obrigado! Acho que preciso dar uma olhada depois de uma boa noite de sono. Faz tempo que não mexo com SQL e acho que preciso verificar mais alguns exemplos e documentação. A coisa abaixo não está funcionando, com certeza

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))

Isso gera este erro, talvez eu esteja passando as informações erradas ou o nome/coluna.

ERROR:  column q.user_id does not exist
LINE 11:  JOIN users u on u.id = q.user_id

Editar: ah sim, user_id deveria ser usado de algum lugar, não id.


E como resultado final, esses distintivos são atribuídos quando em um grupo que começa com o nome 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))

E este para se você estiver em um grupo que termina com -team no nome.

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 curtida