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();

TP框架多表联查的更多相关文章

  1. TP框架---thinkphp表单验证

    自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证.验证的代码要写在模型层即Model里面. 数据验证有两种方式: 静态方式:在模型类里面 ...

  2. tp框架防止表单重复提交

    转载 框架官方 http://www.thinkphp.cn/topic/9090.html 第三方 https://my.oschina.net/caomenglong/blog/728908

  3. TP框架 基础1

    php框架 一.真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项目,十分困难,代码风格 ...

  4. TP框架---thinkphp基础知识

    php框架    发瑞 一.真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项目,十分困 ...

  5. tp框架之自动验证表单

    tp框架的create自动加载表单的方法可以自动根据自己定义的要求来验证表单里面的内容,但是由于是在后台执行代码,会拖慢程序运行速度,所以还是建议通过前端js来进行判断,后台只进行数据库的查询以及传值 ...

  6. tp框架表单验证

    之前的表单验证都是用js写的,这里也可以使用tp框架的验证.但是两者比较而言还是js验证比较好,因为tp框架验证会运行后台代码,这样运行速度和效率就会下降. 自动验证是ThinkPHP模型层提供的一种 ...

  7. tp框架表单验证 及ajax

    之前的表单验证都是用js写的,这里也可以使用tp框架的验证.但是两者比较而言还是js验证比较好,因为tp框架验证会运行后台代码,这样运行速度和效率就会下降. 自动验证是ThinkPHP模型层提供的一种 ...

  8. tp框架表单提交注意!不要提交到当前方法

    tp框架  表单提交到当前方法,会重复执行显示部分和保存部分的代码.导致不知名的错误.

  9. tp框架实现验证码

    今天来看一个小插件. tp框架是怎么实现验证码的. 又到了我们千篇一律的时候了,首先呢,先做一个用来显示的html界面名为:zhuce.html <!DOCTYPE html PUBLIC &q ...

随机推荐

  1. C++虚基类详解(转)

    我们知道,如果一个派生类有多个直接基类,而这些直接基类又有一个共同的基类,则在最终的派生类中会保留该间接共同基类数据成员的多份同名成员.在引用这些同名的成员时,必须在派生类对象名后增加直接基类名,以避 ...

  2. ext中嵌入flash

    方法1: xtype: 'fieldset', border: 0, title: "", items[{ xtype: 'flash', url: 'Test.swf' }] u ...

  3. C#委托基础

    转载自 http://woshixy.blog.51cto.com/5637578/1070976     C#委托基础1——委托基础   委托和其委托的方法必须具有相同的签名.签名相同:1.参数类型 ...

  4. ecshop json类的使用

    ecshop中有2个地方使用了json,一个是cls_json.php文件,一个是transport.js文件. cls_json 封装了json类,可以调用里面的encode的方法,根据参数不同,进 ...

  5. [Python笔记]第八篇:模块

    本篇主要内容:python常用模块用法介绍 什么是模块 模块,用一大段代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性 ...

  6. Python Django开始

    1.创建工程 C:\procedure\projects>django-admin startproject mysite 2.同步数据库 C:\procedure\projects\mysit ...

  7. 《FPGA零基础入门到精通视频教程》-第002计数器(Modelsim前仿真)

    高清视频和配套讲义这里下载 http://www.fpgaw.com/thread-68524-1-1.html 优酷视频

  8. 个人.net学习规划路线

  9. Web日志分析

    http://www.rising.com.cn/newsletter/news/2013-03-20/13380.html https://www.trustwave.com/Resources/S ...

  10. poj 1275 Cashier Employment

    http://poj.org/problem?id=1275 #include <cstdio> #include <cstring> #include <algorit ...