この場合はusr_trmでユーザーごとのtrmを確認しないといけないのでは?
select t1.usr_id,t3.name
,group_concat(if(t2.cat_id=1,t1.trm_id,null)) as cat1
,group_concat(if(t2.cat_id=2,t1.trm_id,null)) as cat2
from usr_trm as t1
inner join trm as t2 on t1.trm_id=t2.trm_id
inner join usr as t3 on t1.usr_id=t3.usr_id
inner join usr_trm as t4 on t4.usr_id=t1.usr_id and t4.trm_id=3
group by usr_id
order by rand()
limit 10;
>総務に所属する人をランダムにn件
便利な機能だとは思いますが、SQLは明確な結果を得るための手段なので
不確実なrand処理を選ぶのは、個人的にはお勧めいたしかねます
お礼
ご回答ありがとうございます! まだ途中なのですが、ご回答を参考にさせていただき何とかうまく実装できそうです。 rand処理の件も助言いただきありがとうございます。 勉強させていただきました!