MySQL に 2 つのテーブルがあります。
users
Columns:
1. id
2. username
3. email
4. password
users_roles
Columns:
1. id
2. user
3. role
次のような配列にロールが保存されています。
array(
'1' => 'Carpenter',
'2' => 'Plumber',
'3' => 'Hair Stylist'
)
検索フォームには、上記のロールとその ID のチェックボックスがあります。フォーム処理スクリプトには$roles
、チェックされたロールを持つ配列があります。
大工、配管工、ヘアスタイリストのいずれかの役割を持つユーザーを検索するためにデータベースにクエリを実行するにはどうすればよいですか?
更新:これが私が思いついたクエリです:
SELECT `users`.`id`
FROM `users`
WHERE
`users`.`id` IN
(
SELECT `user` FROM `users_roles` WHERE `role` IN ( 1, 2, 3 )
)
GROUP BY `users`.`id`
これはこれを達成するための最良の方法ですか?それとも、これによりサーバーの過負荷が発生する可能性がありますか?