您好,登錄后才能下訂單哦!
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
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。