你好,

谁能帮我解决我的查询,
我想在表中有每个学生的每一个最后的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`;

10-08 08:36
查看更多