クエリのヘルプが必要です (Laravel フレームワークを使用)。ユーザーの評価を含むいくつかの列を持つユーザー名簿を作成しています。基本的に、イニシャルを持つすべてのアクティブなユーザーを選択し、ユーザー評価テーブルに参加して、それぞれのユーザーの評価を選択します。特定のwhere_in
評価のみを選択することです。私の問題は名簿にあります。すべてではなく、1 つの評価のみが選択されます (ユーザーが複数の評価を持っている場合)。なしでも試してみましたgroup_by
が、評価の数に応じてユーザーがテーブルに複製されます (例: ユーザーに 2 つの評価がある場合、その行は名簿に 2 回表示されます)。
クエリ:
$users = DB::table('users')
->where('users.initials', '!=', '')
->left_join('user_ratings', 'user_ratings.uid', '=', 'users.uid')
->where_in('users_ratings.rid', array(6,17,21,20))
->group_by('users.uid')
->order_by('users.name')
->get();
テーブル:
Users
=======
uid name
1 John
2 Jeff
3 Cathy
Ratings
======
rid uid
1 1
2 1
2 2
3 1
4 3