數(shù)據(jù)庫結(jié)構(gòu)如下所示
course表
sc表
student表
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();
因?yàn)閟c表中的成績是用float類型存儲的,所以必須對sc表進(jìn)行取到小數(shù)點(diǎn)后兩位需要進(jìn)行number_format
處理,,,,但是最大的問題就是報錯
想要達(dá)到的效果是通過傳過來的課程id和成績的max值,來獲取對應(yīng)的學(xué)生信息,,感覺可以把成績的max值去掉直接通過課程id值來獲取課程最高成績的學(xué)生信息,,,但是不知道怎么做。。。。還望大神指點(diǎn),,,,什么方法都行
擁有18年軟件開發(fā)和IT教學(xué)經(jīng)驗(yàn)。曾任多家上市公司技術(shù)總監(jiān)、架構(gòu)師、項(xiàng)目經(jīng)理、高級軟件工程師等職務(wù)。 網(wǎng)絡(luò)人氣名人講師,...
$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();
很明顯的錯誤,number_format 希望你傳入的是一個浮點(diǎn)數(shù),
解決方法:看你下你的數(shù)據(jù)表結(jié)構(gòu),grade 字段最好用decimal(10,2)
再則,我覺得最好不要在sql語句上做過多的計(jì)算