Du måste använda en kombination av IN()
och GROUP BY ... HAVING
för att uppnå detta. Du behöver inte heller gå med om allt du behöver är användar-ID. Så något i stil med:
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 */
Om du behöver användar-id:n och namn kan du helt enkelt gå med i denna postuppsättning som härrör från frågan ovan som ett filter till användartabellen:
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