Usuarios que no tienen un distintivo particular

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.

Usuarios que no tienen una insignia particular

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

Miembros del grupo que no tienen una insignia específica

¡Genial! Agreguemos parámetros y actualicemos mi lista de consultas :wink:

Versión final: