Budete muset použít kombinaci IN()
a GROUP BY ... HAVING
dosáhnout toho. Také není potřeba připojení, pokud vše, co potřebujete, je ID uživatele. Takže něco jako:
SELECT user, COUNT(attribute) AS attribute_count
FROM attributes
WHERE attribute IN(...) /* include your set of attributes here */
GROUP BY user
HAVING attribute_count = ? /* include number equal to number of attribute ID's in IN() above */
Pokud potřebujete ID a jména uživatelů, můžete jednoduše připojit tuto sadu záznamů odvozenou z výše uvedeného dotazu jako filtr do tabulky uživatelů:
SELECT user.id, user.name
FROM user
INNER JOIN
(
SELECT user, COUNT(attribute) AS attribute_count
FROM attributes
WHERE attribute IN(...) /* include your set of attributes here */
GROUP BY user
HAVING attribute_count = ? /* include number equal to number of attribute ID's in IN() above */
) AS filter
ON user.id = filter.user