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