Estoy tratando de armar una consulta que muestre los usuarios de un grupo que no tienen una insignia en particular, como “Certified”.
Algo como: “dame todos los usuarios del grupo VIP donde la insignia Certified no exista”. Gracias.
Estoy tratando de armar una consulta que muestre los usuarios de un grupo que no tienen una insignia en particular, como “Certified”.
Algo como: “dame todos los usuarios del grupo VIP donde la insignia Certified no exista”. Gracias.
Bueno, intentemos esto:
WITH exclude_badge AS (
SELECT gu.user_id
FROM badges b, user_badges ub, users u, group_users gu
WHERE u.id = ub.user_id
AND ub.badge_id = b.id
AND u.id = gu.user_id
AND b.name = 'Certified'
AND gu.id = 10
)
SELECT
u.id AS user_id
FROM users u
WHERE u.id NOT IN (SELECT * FROM exclude_badge)
ORDER BY user_id
LIMIT 10
Gracias por tu ayuda, Sid. He realizado algunos ajustes y lo he logrado con lo siguiente:
SELECT gu.user_id
FROM badges b, user_badges ub, users u, group_users gu
WHERE u.id = ub.user_id
AND ub.badge_id = b.id
AND u.id = gu.user_id
AND b.name = 'Certified'
AND gu.group_id = 42
)
SELECT
u.id AS user_id
FROM users u, group_users gu
WHERE u.id = gu.user_id
and gu.group_id = 42
and u.id NOT IN (SELECT * FROM exclude_badge)
ORDER BY user_id
LIMIT 100