注: MySQL 4.0 を使用しているため、(現時点では) サブクエリはありません。
私は2つのテーブルを持っています:
- 「user_details」テーブル
- user_id と「skill_id」を持つ「skills」テーブル。これは、別の場所で定義された定義済みの一連のスキルにマップされます。
現在のクエリでは、管理者はスキルを選択してユーザーを検索できます。クエリは OR 方式で機能します。たとえば、次のようになります。
LEFT JOIN skills
ON (ud.user_id = skills.user_id)
WHERE skills.skill_id in (51, 52, 53, 54, 55)
GROUP BY ud.user_id
これにより返されるレコードが多すぎるため、この検索フィールドを AND 方式で機能させたいと考えています。この場合、ユーザーは選択したすべてのスキルを検索で返す必要があります。
サブクエリが最適なオプションである場合、MySQL をアップグレードできる可能性があります。
編集: group by、count、having などと関係があります。返される一致した行の数を要件として group by コマンドを制限できますか? (例: この例では 5)。
edit2: テスト:
HAVING COUNT( * ) > 5