本人用ThinkPHP3.2,今天正在開(kāi)發(fā)一個(gè)需要分組顯示的功能,可是從數(shù)據(jù)庫(kù)中把相應(yīng)數(shù)據(jù)讀取后直接用group分組,結(jié)果每組顯示的是最老的記錄,我的需求是要顯示每組的最新記錄。在網(wǎng)上大搜一翻后,未果,本人決定自行研究,現(xiàn)將方法記錄于此以防遺忘。
創(chuàng)新互聯(lián)主要從事網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)資溪,十載網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):18980820575
其實(shí)很簡(jiǎn)單,以供就兩步:
第一步:
將符合條件的數(shù)據(jù)全部取出,暫不用group分組,作為子查詢:
[php]?view plain?copy
$subQuery?=?$model-field('id,name')-table('tablename')-where($where)-order('time?desc')-select(false);
第二部:
利用子查詢進(jìn)行查詢分組
[php]?view plain?copy
$model-table($subQuery.'?a')-group('field')-select();span?style="font-family:?Arial,?Helvetica,?sans-serif;"?/span
好了,思路就是這樣。希望對(duì)大家有幫助!
分組查詢?cè)矶际荢QL的分組查詢,THINKPHP中只是用到他自己的一些自定義的方法!比如 join()、group()、having()方法等,實(shí)際對(duì)應(yīng)的也是SQL里的這些關(guān)鍵字!
例如本次需求是要按照cid進(jìn)行分組,按照通常的做法是 SELECT * FROM 表名 GROUP BY cid,這樣就能按照cid進(jìn)行分組篩選!然后使用THINKPHP的時(shí)候則使用 M('表名')-group('cid')-select(); 實(shí)際生成的語(yǔ)句和原始SQL代碼是一樣的。
有點(diǎn)不太明白你的意思,不過(guò)thinkphp的查詢可以使用這種方法,你上面有兩個(gè)表,假設(shè)用戶表就叫做user,文章表叫做paper,那你就可以這樣:$dao=M("user"); $rs=$dao-table('user as u,paper as p')-field('u.xxxx,p.xxxx')-select();
其中field()方法是你要查找的字段,如果在你兩張表沒(méi)有字段名是重復(fù)的情況下,你也是可以不用這個(gè)方法的。這樣就把你要查找的資料存放到一個(gè)組數(shù)$rs里面了