我使用laravel框架。我写了这个查询,但显示出一个错误:
错误:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'schools.grade' in 'field list' (SQL: select `students`.`name`, `students`.`lastname`, students.id, max(`schools.grade`) as `grade` from `students` inner join `schools` on `schools`.`id` = `students`.`id` group by `schools`.`id` having `grade` = 6)
我的代码:
$stu = students::join('schools', 'schools.id',"=", 'students.id')
->select('students.name','students.lastname',DB::raw('students.id, max(`schools.grade`) as `grade`'))
->groupBy('schools.id')
->having('grade','=',$grade)
->get();
dd($stu);
怎么了?
答案 0 :(得分:0)
$stu = students::join('schools as s', 's.id',"=", 'students.id')
->select('students.name','students.lastname','students.id,
DB::raw(max(`s.grade`) as `grade`')) // make sure grade exist in school? if in student then use students.grade in db:Row
->groupBy('s.id')
->having('grade','=',$grade)
->get();
答案 1 :(得分:0)
你这样写。...
$stu = students::join('schools', 'schools.id',"=", 'students.id')
->select('students.name','students.lastname',DB::raw('students.id,max(`schools.grade`) as `grade`'))
->groupBy('schools.id')
->having('schools.grade','=',$grade)->get();
dd($stu);
答案 2 :(得分:0)
第一件事是您要验证grade
表中是否有列schools
,因为这很可能就是问题所在。
如果您起诉它确实存在,那么也尝试在having
条件下使用表名:
$stu = students::join('schools', 'schools.id',"=", 'students.id')
->select('students.name','students.lastname',DB::raw('students.id, max(`schools.grade`) as `grade`'))
->groupBy('schools.id')
->having('schools.grade','=',$grade)
->get();
dd($stu);
答案 3 :(得分:0)
在这里
$stu = students::join('schools', 'schools.id',"=", 'students.id')
->select('students.name','students.lastname',DB::raw('students.id, max(`schools.grade`) as `grade`'))
->groupBy('schools.id')
->having('schools.grade','=',$grade) // please chnage your code here..
->get();
答案 4 :(得分:0)
我检查了这两个查询作为测试,它们分别工作。但是主查询(我首先提到)可能无法正常工作。
DB::table('schools')
->select(DB::raw('id, max(`grade`) as `grade`'))
->groupBy('id')
->having('grade','=',$grade)
->get();
和:
$stu = students::join('schools', 'schools.id',"=", 'students.id')
->select('students.name','students.lastname','students.id','schools.grade')
->where('schools.grade','=',$grade)
->get();