標籤:thinkphp多表查詢 thinkphp兩張表串連查詢
ThinkPHP多表查詢處理
ThinkPHP多表串連查詢處理
ThinkPHP關聯查詢(多表查詢)
網上找到三種方法:table()、join()、原生SQL語句查詢。(以下三種方法輸出結果一致,並且很好的保留了ThinkPHP自己的分頁功能)
第一種:table()方法
執行個體:需要串連查詢兩張表(表agent和表transinfo)
$Model=new Model();$sqlcount="select count(*) as mycount from agent a ,transinfo t where t.clientId=a.id and t.transType like ‘%agent%‘ and a.id in (".$agent_str.")";$listCount = $Model ->query($sqlcount);$Page = new Page ( $listCount[0][mycount], 2 );$show = $Page->show ();$list = $Model->table(‘agent a, transinfo t‘)->where("t.clientId=a.id and t.transType like ‘%agent%‘ and a.id in (".$agent_str.")")->limit ( $Page->firstRow . ‘,‘ . $Page->listRows )->select();//echo $Model->getLastSql();$this->assign(‘list‘,$list);// 賦值資料集$this->assign(‘page‘,$show);// 賦值分頁輸出
第二種:join()方法
執行個體:需要串連查詢兩張表(表agent和表transinfo)
$Model=new Model();$agentModel = $Model->Table("agent");$listCount = $agentModel->join(" AS a RIGHT JOIN transinfo t ON t.clientId=a.id and t.transType like ‘%agent%‘ and a.id in (".$agent_str.")")->field("count(*) as mycount")->select();$Page = new Page ( $listCount[0][mycount], 2 );$show = $Page->show ();$Model=new Model();$agentModel = $Model->Table("agent");$list =$agentModel->join(" AS a RIGHT JOIN transinfo t ON t.clientId=a.id and t.transType like ‘%agent%‘ and a.id in (".$agent_str.") order by t.id DESC limit ".$Page->firstRow.",".$Page->listRows)->field("a.*,t.*")->select();//echo $agentModel->getLastSql();$this->assign(‘list‘,$list);// 賦值資料集$this->assign(‘page‘,$show);// 賦值分頁輸出
提示:你也可以這樣執行個體化更簡潔(官方推薦的):$agentModel = M(‘Agent‘); // 執行個體化User對象
第三種:原生SQL語句查詢法
$Model=new Model();$sqlcount="select count(*) as mycount from agent a ,transinfo t where t.clientId=a.id ".$where. " and t.transType like ‘%agent%‘ and a.id in (".$agent_str.")";$listCount = $Model ->query($sqlcount);$Page = new Page($listCount[0][‘mycount‘],2);// 執行個體化分頁類 傳入總記錄數和每頁顯示的記錄數$show = $Page->show();$sqlList="select t.*,a.* from agent a ,transinfo t where t.clientId=a.id ".$where. " and t.transType like ‘%agent%‘ and a.id in (".$agent_str.") limit {$Page->firstRow},{$Page->listRows}";$list = $Model ->query($sqlList);$this->assign(‘list‘,$list);// 賦值資料集$this->assign(‘page‘,$show);// 賦值分頁輸出
參考資料:
http://hi.baidu.com/wjlhh001/item/18d9a91031081b5e2a3e22af
http://www.yunda51.com/304.html
http://www.w3school.com.cn/sql/sql_join_right.asp
END
本文出自 “PHPer許琴-專註於PHP技術” 部落格,請務必保留此出處http://xuqin.blog.51cto.com/5183168/1564492
ThinkPHP多表查詢