SELECT u.*
FROM (
SELECT user_id
FROM tag t
JOIN user_has_tag uht
ON uht.tag_id = t.id
WHERE tag_name IN ('apple', 'orange', 'banana')
GROUP BY
user_id
HAVING COUNT(*) = 3
) q
JOIN user u
ON u.id = q.user_id
Door HAVING COUNT(*)
. te verwijderen , krijg je OR
in plaats van AND
(hoewel het niet de meest efficiënte manier zal zijn)
Door 3
te vervangen met 2
, krijg je gebruikers die precies twee van de drie tags hebben gedefinieerd.
Door = 3
te vervangen met >= 2
, krijg je gebruikers die ten minste twee of drie tags hebben gedefinieerd.