你好,
谁能帮我解决我的查询,
我想在表中有每个学生的每一个最后的reasonID。
我试了几个小时,但找不到解决方案。
这是我的查询Laravel查询:
DB::table('studentsallstatuses as sas')
->whereIn('sasr.reason', $req->studentStatuses)
->where('sas.semester', $req->semesters)
->join('studentsallstatusesreasons as sasr', 'sasr.parentID', '=', 'sas.studentStatusID')
->select('sas.studentID', 'sasr.parentID','sasr.reason', 'sasr.reasonID')
->orderBy('sas.studentID', 'DESC')->get();
这是我的MySql查询:
select `sas`.`studentID` , `sasr`.`parentID`, `sasr`.`reason`, `sasr`.`reasonID`
from `studentsallstatuses` as `sas`
inner join `studentsallstatusesreasons` as `sasr` on `sasr`.`parentID` =`sas`.`studentStatusID`
where `sasr`.`reason` in (50,121) and `sas`.`semester` = 11 ORDER BY `sas`.`studentID`;
结果是:
studentID parentID reason reasonID
444 369 50 160
444 369 50 161
444 369 50 162
444 369 50 163
555 376 121 177
555 376 121 178
555 376 121 188
555 376 121 190
555 376 121 191
555 376 121 166
555 376 121 176
666 377 121 179
666 377 121 189
666 377 121 192
666 377 121 167
表结构
最佳答案
应用具有比较条件的左联接并获取每个学生的最后一条记录,
SELECT `sas`.`studentID` , `sasr`.`parentID`, `sasr`.`reason`, `sasr`.`reasonID`
FROM `studentsallstatusesreasons` as `sasr`
INNER JOIN `studentsallstatuses` as `sas` on `sasr`.`parentID` =`sas`.`studentStatusID`
LEFT JOIN studentsallstatusesreasons sasr1 ON (sasr1.parentID = sasr.parentID AND sasr.reasonID < sasr1.reasonID)
WHERE sasr1.reasonID IS NULL AND `sasr`.`reason` in (50,121) and `sas`.`semester` = 11
ORDER BY `sas`.`studentID`;