Anda harus menggunakan kombinasi IN()
dan GROUP BY ... HAVING
untuk mencapai ini. Juga tidak perlu bergabung jika yang Anda butuhkan hanyalah ID pengguna. Jadi sesuatu seperti:
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 */
Jika Anda memerlukan ID dan nama pengguna, Anda cukup bergabung dengan kumpulan rekaman ini yang berasal dari kueri di atas sebagai filter ke tabel pengguna:
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