2016-06-18 3 views
0

У меня есть 3 таблицы:Laravel: Query Builder Присоединяйтесь Многопользовательская таблицы

users_tb с колоннами:

user_id (pk) 
user_name 

device_tb с колоннами:

user_id (fk) 
device_id (pk) 
device_name 

part_tb с колоннами :

deive_id (fk) 
part_id (pk) 
part_name 
user_buy (fk) 

Отношения:

device_tb один ко многим part_tb (1 устройство может создать от многих части)

user_tb один ко многим device_tb (1 человек может создать для многих устройство)

пользователь_tb 1-й номер part_tb (1 человек может купить многие устройства)

Как я могу подсчитать общее количество частей, используемых для всех устройств для каждого пользователя?

Пример: устройство: ПК1 - создано из частей: мышь, клавиатура, процессор - от пользователя: Allen

Результат: Пользователь Аллен использовали части

Мне очень жаль, мой английский: ((

ответ

0

Y ожно попробовать с помощью следующего запроса

$val = DB::table('users_tb')->select(array("users_tb.user_name", DB::raw('count(part_tb.part_id) as count_part')))->leftJoin('device_tb', 'users_tb.user_id', '=', 'device_tb.user_id')->leftJoin('part_tb', 'device_tb.device_id', '=', 'part_tb.deive_id')->get(); 

этот код поможет вам ..

+0

Спасибо за помощь. Но «Пользователь» покупает детали по-разному «Пользователь», созданному устройством, нигде не одному пользователю. Большое спасибо! –

+0

Значит, он не работает для вашего дела? –

+0

да :(он не работает для моего кода –

0

Вы пробовали этот

$val = DB::table('users_tb') 
->select("users_tb.user_name") 
->select(DB::raw('count(part_tb.part_id) as count_part')) 
->leftJoin('device_tb', 'users_tb.user_id', '=', 'device_tb.user_id') 
->leftJoin('part_tb', 'users_tb.user_id', '=', 'part_tb.user_buy') 
->groupBy('users_tb.user_id') 
->get(); 

Если возможно, то вы можете отправить sqlfiffle ссылку.

+0

Большое спасибо, но «Пользователь» покупает детали по-разному «Пользователь», созданному устройством, ни разу ни одним пользователем. –