tp中多表聯合查詢


join方法
import("@.ORG.Page");
        $Form   =   M('gly');
        $where='';
        if ($_POST['qcx']=='查詢'){
            if (!empty($_POST['username'])){
                $where    =   'glyname like \'%'.trim($_POST['username']).'%\'';
            }
        }
        $count  = $Form->join('think_role  ON think_gly.rid = think_role.id')->where($where)->count('think_gly.id');    //計算總數
        $Page = new Page($count, 10);
        $list = $Form->field('think_gly.*,think_role.name as rolename')->join('think_role on think_gly.rid=think_role.id' )->where($where)->limit($Page->firstRow. ',' . $Page->listRows)->order('think_role.id desc')->select();
        // 模擬設置分頁額外傳入的參數
        // 設置分頁顯示
        $Page->setConfig('header', '條數據');
        $Page->setConfig('first', '<上頁');
        $Page->setConfig('last', '下頁>');
        $page = $Page->show();
        $this->assign("page", $page);
        $this->assign("list", $list);
        $this->display();
import("@.ORG.Page");
        $Form   =   M('gly');
        $where='';
        if ($_POST['qcx']=='查詢'){
            if (!empty($_POST['username'])){
                $where    =   'glyname like \'%'.trim($_POST['username']).'%\'';
            }
        }
        $count  = $Form->table('think_role a,think_gly b')->where('a.id=b.rid')->count('b.id');    //計算總數
        $Page = new Page($count, 10);
        $list = $Form->field('b.*,a.name as rolename')->table('think_role a,think_gly b' )->where('a.id=b.rid')->limit($Page->firstRow. ',' . $Page->listRows)->order('b.id desc')->select();
        // 模擬設置分頁額外傳入的參數
        // 設置分頁顯示
        $Page->setConfig('header', '條數據');
        $Page->setConfig('first', '<上頁');
        $Page->setConfig('last', '下頁>');
        $page = $Page->show();
        $this->assign("page", $page);
        $this->assign("list", $list);
        $this->display();
sql的執行效果如下:
SELECT COUNT(b.id) AS tp_count FROM think_role a,think_gly b WHERE a.id=b.rid LIMIT 1;
SELECT b.*,a.name as rolename FROM think_role a,think_gly b WHERE a.id=b.rid ORDER BY b.id desc LIMIT 0,10



參考的資料如下:

THINKPHP 中關聯查詢(多表查詢)可以使用 table() 方法或和join方法,請看示例:
聯合查詢
        1、原生查詢
        $sql = 'select f.*,s.sort_name from think_form as f, think_sort as s where f.sort_id=s.sort_id  order by f.id DESC limit 3';
        $list = $Form->query($sql);
        2、join() 兩表查詢
        $list = $Form->join('think_sort ON think_form.sort_id = think_sort.sort_id' )->select();
        3、join() 多表查詢
        $list = $Form->join('think_sort ON think_form.sort_id = think_sort.sort_id' )->join('think_brand ON think_form.brand_id = think_brand.brand_id' )->select();
        4、table()
 $list = $user->table('user_status stats, user_profile profile')->where('stats.id = profile.typeid')->field('stats.id as id, stats.display as display, profile.title as title,profile.content as content')->order('stats.id desc' )->select();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM