laravel5.2 的sql语句问题

发布于 2022-09-04 17:54:00 字数 1295 浏览 16 评论 0

数据库结构如下所示

clipboard.png

course表
clipboard.png

sc表

clipboard.png

student表

clipboard.png

laravel的sql语句代码

$get_all = sc::leftJoin("student", "sc.sid", "=", "student.snum")
            ->Join("course", "sc.cid", "=", "course.cno")
            ->where('sc.cid', '=', $id)
            ->where(number_format('sc.grade',2), '=', $max)
            ->get();

因为sc表中的成绩是用float类型存储的,所以必须对sc表进行取到小数点后两位需要进行number_format处理,,,,但是最大的问题就是报错

clipboard.png

想要达到的效果是通过传过来的课程id和成绩的max值,来获取对应的学生信息,,感觉可以把成绩的max值去掉直接通过课程id值来获取课程最高成绩的学生信息,,,但是不知道怎么做。。。。还望大神指点,,,,什么方法都行

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

生活了然无味 2022-09-11 17:54:00
   $get_all = sc::leftJoin("student", "sc.sid", "=", "student.snum")
        ->Join("course", "sc.cid", "=", "course.cno")
        ->where('sc.cid', '=', $id)
        ->whereRaw("format(sc.grade,2) = $max")
        ->get();
温折酒 2022-09-11 17:54:00

很明显的错误,number_format 希望你传入的是一个浮点数,
解决方法:看你下你的数据表结构,grade 字段最好用decimal(10,2)
再则,我觉得最好不要在sql语句上做过多的计算

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文