Я хочу вернуть пользователей, у которых есть карты в статусе C, НО карт нет в статусах A, B.
Текущий запрос возвращает мне запись, у которой есть C, но у них также есть B! В этом случае я хочу получить ноль.
SELECT u.*,
b.id AS categories,
c.id AS cards
FROM users AS u
JOIN categories AS b ON u.id = b.user_id
JOIN cards AS gac ON u.id = c.user_id
WHERE b.type = 'whatever' AND
c.status NOT IN ('A', 'B') AND c.status = 'C';
В ruby на рельсах:
users = User.includes(categories: :cards).where(categories: {type: :whatever}).where.not(cards: {status: ['A', 'B']}).where(cards: {status: 'C'})
Так что, если у них есть карты в [A, B], а также в C, я не будуне хочу, чтобы пользователь вернулся !!!