Я делаю запрос для вычисления уникальной суммы из 5 вкладок.
Текущий лог c равен
Количество проектов (308) = количество (tab1 + tab2 + tab3 + tab4 + tab5)
Но нужно изменить логи c на: отображение количества уникальных проектов из всех 5 вкладок. Так как проект из одной вкладки может быть и в другой вкладке.
Сейчас я объединяю код sql для всех 5 вкладок в одном запросе, чтобы найти общее количество уникальных проектов. Объединение первых 3 вкладок не представляло особой сложности, поскольку в них объединялись общие таблицы, но для 4-й и 5-й вкладок они объединяются с другими таблицами для определения количества.
Теперь я думаю, что запросы на соединение для 4-й и 5-я вкладка вообще не работает.
Вот запрос, чтобы найти счет 4-й вкладки.
$countComplete = DB::table('t_project as pro')
->leftjoin('t_project_cellphone as co', 'pro.id','=','co.project_id')
->leftjoin('t_contract_cellphone as tdic','pro.id','=','tdic.project_id')
->whereIn('pro.status', [9,10,11,12,13,14,15,16,17,18,22])
->where('pro.revisit_status',0)
// ->where('co.cancel_user', 0)
->where('co.s_display_4', 0)
->whereNotNull('tdic.reg_completed_at')
->groupby('pro.id')
->count();
Вот запрос, чтобы узнать общее количество уникальных проектов.
$projectcount = DB::table('t_project as pro')
->leftjoin('t_project_cellphone as co', 'pro.id','=','co.project_id')
// ->leftjoin('t_contract_cellphone as tdic','pro.id','=','tdic.project_id')
// ->leftjoin('t_project_completed_cellphone as tcc', 'pro.id','=', 'tcc.project_id')
->where(function($join){
$join
->where(function($join1){
$join1->whereIn('pro.status', [9,10,11,12,13,14,15,16,17,18,22,CellPhoneStatus::DISAPPROVAL])
->where('pro.product_id', 1)
->where('co.s_display_1', 0);
})
->orWhere(function($join2){
$join2->whereIn('pro.status', [9,10,11,12,13,14,15,16,17,18,22])
->where('co.s_display_2', 0)
->where('co.biz_status','=',1);
})
->orWhere(function($join3){
$join3->whereIn('pro.status', [9,10,11,12,13,14,15,16,17,18,22])
->where('co.s_display_3', 0)
->where('pro.revisit_status',0)
->where(function($join31){
$join31->where('co.ship_status',1)
->orwhere('co.ship_battery_status',1);
});
})
->orWhere(function($join4){
$join4
// ->leftjoin('t_contract_cellphone as tdic','pro.id','=','tdic.project_id')
->leftjoin('t_contract_cellphone as tdic', function($join41){
$join41->on('pro.id','=','tdic.project_id')
->whereNotNull('tdic.reg_completed_at');
})
->whereIn('pro.status', [9,10,11,12,13,14,15,16,17,18,22])
->groupby('pro.id')
->where('co.s_display_4', 0);
})
->orWhere(function($join5){
$join5
// ->leftjoin('t_project_completed_cellphone as tcc', 'pro.id','=', '.project_id')
->leftjoin('t_project_completed_cellphone as tcc', function($join51){
$join51->on('pro.id','=','tcc.project_id')
->where('tcc.total_complete_status', 1);
})
->whereIn('pro.status', [9,10,11,12,13,14,15,16,17,18,22])
->where('co.s_display_5', 0);
})
;
})
->where('pro.revisit_status',0)
->count();
Может кто-нибудь помочь мне решить эту проблему при присоединении?