gpt4 book ai didi

mysql - 如何在 Laravel 中获得更大的行值

转载 作者:行者123 更新时间:2023-11-29 19:13:12 26 4
gpt4 key购买 nike

我正在开发一个项目,需要帮助。如果学生选修了该科目两次,我需要检查他的成绩,然后取成绩中较大的值。假设他第一次尝试该科目时得到了 E,然后他再次尝试并得到了 B。或者在其他情况下,在他第一次尝试中他得到了 C,然后当他重新尝试该科目时,他得到了 D。

这是我的 table

id_krs | id_mhs | id_sub | status | grade 
------ | ------ | ------ | ------ | ------
1 | 3 | 1 | B | A
2 | 3 | 3 | B | A
3 | 3 | 4 | B | E
4 | 3 | 4 | U | B
5 | 3 | 7 | B | C
6 | 3 | 7 | U | E

B = 第一次,U = 重试。

编辑

很抱歉这个问题不太清楚。我的查询是

 $user=Auth::user()->username;
$mhs = DB::table('krs as f')
->select('f.id_sub','f.status','f.grade','f.id_krs',DB::raw("(
CASE
when f.grade= 'E' then 0
when f.grade= 'D' then 1
when f.grade= 'D+' then 1.5
when f.grade= 'C' then 2
when f.grade= 'B' then 3
when f.grade= 'B+' then 3.5
when f.grade= 'A' then 4 end
)
AS angka_kredit"))
->join('mhs_pt as a','a.id_mhs_pt','=','f.id_mhs_pt')
->orderBy('angka_kredit','asc')
->groupBy('f.id_sub')
->where('a.no_mhs',$user)
->get();

当我将结果转成json时,结果是

[{"id_sub":30,"status":"B","grade":"D","id_krs":45,"angka_kredit":"1.0"},
{"id_sub":31,"status":"B","grade":"C","id_krs":46,"angka_kredit":"2.0"},
{"id_sub":29,"status":"B","grade":"A","id_krs":38,"angka_kredit":"4.0"}]

而我表中的数据是

+--------+-----------+----------+--------+-------+
| id_krs | id_mhs_pt | id_sub | status | grade |
+--------+-----------+----------+--------+-------+
| 38 | 3 | 29 | B | A |
| 45 | 3 | 30 | B | D |
| 46 | 3 | 31 | B | C |
| 18393 | 3 | 31 | U | A |
+--------+-----------+----------+--------+-------+

我的意思是结果查询应该显示 id_krs 18393 而不是 46,因为它有更高的等级。非常感谢!

最佳答案

假设您的模型名称为:StudentGrade,当前科目 ID 为 4,当前学生 ID 为 3,您可以尝试以下查询:

$grade = StudentGrade::where('id_sub', '=', 4)->where('id_mhs', '=', 3)->orderBy('grade', 'asc')->first();

希望这可以帮助您找到正确的方向:)

关于mysql - 如何在 Laravel 中获得更大的行值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42918351/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com