Задать вопрос
@alexfyodrv

Как сгрупировать данные из двух таблиц по одной колонке?

Подскажите пожалуйста как я могу сгрупировать данные из двух таблиц по значению value?
В таблицах "data1, data2" хранятся статусы разных типов и мне нужно сделать общую таблицу где показать какое количество пользователей имеют этот статус.

$query = User::leftJoin('data1', 'data1.user_id', '=', 'users.id')
            ->leftJoin('data2', 'data2.user_id', '=', 'users.id')
            ->select('data1.text as value', 'data2.name as value', DB::raw('count(*) as users_count'))
            ->groupBy('value')
            ->orderByDesc('users_count');
  • Вопрос задан
  • 87 просмотров
Подписаться 1 Простой Комментировать
Решение пользователя idShura К ответам на вопрос (2)
idShura
@idShura
select d.value,
       count(*) users_count 
  from user u

left join (select user_id, data1.text value from data1
            union all
           select user_id, data2.name value from data2
           ) d on d.user_id = u.id

group by d.value
Ответ написан