问题描述
SELECT
disTINCT
I.id,T.id,T.name,I.first_name,I.middle_name,I.last_name,I.dob,CASE WHEN NOT E.email IS NULL THEN '<<' ELSE '' END
FROM individuals AS I
LEFT JOIN titles AS T ON I.title_id = T.ID
LEFT JOIN individuals_emails_map AS IEM ON IEM.individual_id = I.id
LEFT JOIN emails AS E ON E.id = IEM.email_id;
DB::table('individuals AS I')
->join('titles AS T','T.id','=','I.title_id')
->leftjoin('individuals_emails_map AS IEM','IEM.individual_id','I.id')
->leftjoin('emails AS E','E.id','IEM.email_id')
->distinct('I.title_id','T.name','I.first_name','I.middle_name','I.last_name','I.dob')
->select('T.id','I.dob')
->get();
...它工作正常,但是当我尝试插入CASE
行时:
DB::table('individuals AS I')
->join('titles AS T','I.dob',DB::raw("CASE WHEN NOT E.email IS NULL THEN '<<' ELSE '' END"))
->get();
...我收到以下错误:
Undefined table: 7 ERROR: missing FROM-clause entry for table "e"
我在做什么错了?
解决方法
我认为您的案例陈述中存在问题:
DataTables
应该是:
$query = Accounts::with('type')->whereYear('created_at',$selectedYear)->select('type_id',DB::raw('type_id as type_id'),DB::raw('sum(amount) as total_amount'),DB::raw("DATE_FORMAT(created_at,'%m') as months")
)->groupBy('months')->get();