ユーザーへの属性の関連付けが一意であると仮定すると...
3 つの条件を true にする必要がある場合は、条件を in に追加し、カウントアップ 1 を調整します。
SELECT u.name
FROM users u
INNER JOIN attributes a on A.user_Id = u.id
WHERE a.name in ('bla','blub')
GROUP by u.name
HAVING count(*)=2
一意の関連付けがない場合、または別のテーブルに参加する必要がある場合は、いつでも行うことができます...
SELECT u.name
FROM users u
INNER JOIN attributes a on A.user_Id = u.id
WHERE a.name in ('bla','blub')
GROUP by u.name
HAVING count(distinct A.name)=2
わずかなパフォーマンス ヒットの場合。ただし、これにより、他の人がこの方法の欠点であると指摘した追加のフィールドに参加して戻すことができます。
これにより、毎回異なるテーブルに結合するコストが発生する代わりに、ソリューションのスケーリングが可能になります。さらに、30 個の値を関連付ける必要がある場合、許可される結合の数が制限される可能性があります。