المستخدمون الذين لا يحملون شارة معينة

أحاول صياغة استعلام يعرض مستخدمين من مجموعة معينة لا يحملون شارة محددة، مثل “معتمد”.

شبه المطلوب: “أعطني جميع المستخدمين من مجموعة VIP حيث لا توجد شارة معتمد”. شكراً لك.

مستخدمون لا يحملون شارة معينة

حسنًا، لنجرب هذا:

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

شكرًا لمساعدتك يا سيد، قمت بإجراء بعض التعديلات البسيطة وجعلتها تعمل مع الكود التالي:

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

أعضاء المجموعة الذين لا يحملون شارة معينة

عظيم! دعنا نضيف المعلمات ونحدّث قائمة الاستعلامات الخاصة بي :wink:

النسخة النهائية: