Benutzer ohne ein bestimmtes Abzeichen

Ich versuche, eine Abfrage zusammenzustellen, die Benutzer einer Gruppe anzeigt, die kein bestimmtes Abzeichen, wie z. B. „Certified", besitzen.

Etwas in der Art: „Gib mir alle Benutzer aus der Gruppe VIP, bei denen das Abzeichen „Certified" nicht existiert." Vielen Dank.

Benutzer ohne ein bestimmtes Abzeichen

Nun, versuchen wir es einmal so:

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

Danke für deine Hilfe, Sid. Ich habe ein paar Anpassungen vorgenommen, und es funktioniert nun mit folgendem Code:

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

Mitglieder der Gruppe, die kein bestimmtes Abzeichen haben

Toll! Lass uns Parameter hinzufügen und meine Abfrageliste aktualisieren :wink:

Endgültige Version: