Badge query funziona in explorer ma non in badge SQL?

Ho questa query di seguito, che funziona nell’esploratore dati, ma ricevo l’errore Spiacenti, si è verificato un errore. quando tento di utilizzare la query per assegnare badge. Mi sfugge qualcosa? La query dovrebbe corrispondere se qualcuno è membro di un gruppo chiamato “chapter_” o “meta_chapter_” ed è assegnato come gruppo primario.

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 Mi Piace

Per quelli attivati ​​personalizzati è necessario aggiungere una riga in più all’inizio e alla fine. C’è un esempio in uno dei miei post qui sopra e puoi trovare maggiori informazioni su Creating triggered custom badge queries :+1:

3 Mi Piace

Grazie! Penso che dovrò dare un’occhiata dopo una buona notte di sonno. È da un po’ che non uso SQL e immagino che dovrò controllare altri esempi e documentazione. Quello qui sotto non funziona, questo è sicuro

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

Genera questo errore, forse sto passando informazioni errate o nomi/colonne errati.

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

Modifica: ah sì, user_id dovrebbe essere usato da qualche parte, non id.


E come risultato finale, questi badge vengono assegnati quando si è in un gruppo il cui nome inizia con chapter_ o 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 questo per se si è in un gruppo il cui nome termina con -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 Mi Piace