$k=M('order a');
$bj=$k->join("left join __CHANGE__ b on b.tb_name='order'and a.order_id=b.tb_id ")
->join("left join __USERS__ c on c.user_id=a.user_id")
->join("left join __NATION__ e on e.code=a.city")
->join("left join __CAR__ f on f.car_id=a.car_category")
->join("left join __OFFER__ d on d.order_id=a.order_id")
->where('a.is_active=1 and a.car_category in ('.$car_category_string.") and a.order_status=0 and a.cut_off_time>".time())
->field('a.order_id,a.car_category,c.nickname,b.change_time as time,c.city as city,a.order_sn,d.offer_sn,e.city,f.scs')
->order("b.change_time")
->select();

 发现分组有点乱,添加了 case 分组

       $k=M('order a');
$bj=$k->join("left join __CHANGE__ b on b.tb_name='order'and a.order_id=b.tb_id and b.user_id=$this->user_id")
->join("join __USERS__ c on c.user_id=a.user_id")
->join("join __NATION__ e on e.code=a.city")
->join("join __CAR__ f on f.car_id=a.car_category")
->join("left join __OFFER__ d on d.order_id=a.order_id and d.user_id=$this->user_id")
->where('a.is_active=1 and a.car_category in ('.$car_category_string.") and a.order_status=0 and a.cut_off_time>".time())
->field('a.order_id,a.add_time,a.car_category,c.nickname,b.change_time as time,c.city as city,a.order_sn,d.offer_sn,e.city,f.scs,CASE
WHEN b.change_time is null && d.offer_sn IS NULL THEN 0 when b.change_time is NOT null && d.offer_sn IS NULL THEN 1
ELSE 2
END AS flag')
// ->group('d.offer_sn is null')
->order("flag,a.add_time desc")
->select();

mysql 语句

SELECT
a.order_id,
a.add_time,
a.car_category,
c.nickname,
b.change_time AS time,
c.city AS city,
a.order_sn,
d.offer_sn,
e.city,
CASE
WHEN b.change_time is null && d.offer_sn IS NULL THEN when b.change_time is NOT null && d.offer_sn IS NULL THEN
ELSE
END AS flag,
f.scs
FROM
beir_order a
LEFT JOIN beir_change b ON b.tb_name = 'order'
AND a.order_id = b.tb_id
AND b.user_id =
JOIN beir_users c ON c.user_id = a.user_id
JOIN beir_nation e ON e. CODE = a.city
JOIN beir_car f ON f.car_id = a.car_category
LEFT JOIN beir_offer d ON d.order_id = a.order_id
AND d.user_id =
WHERE
(
a.is_active =
AND a.car_category IN (, , , , )
AND a.order_status =
AND a.cut_off_time >
)
ORDER BY
flag,
a.add_time DESC

 另外再贴一个恰维后台某个调动下载页面的代码

        $model=M('category');
$cat1=$model->where("pid=52")->order("id desc")->select();
foreach ($cat1 as $k=>$value){
$arr[]=$value['id'];
}
$arr=implode(",",$arr);
$condition['sid'] = array('in', $arr);
$cat2=M('article')->Distinct(true)->where($condition)->field('keywords')->select(); //分页开始
$count=M('article')->where($condition)->count();
$p = intval($p) > 0 ? $p : 1;
$pagesize = 10;#每页数量
$offset = $pagesize * ($p - 1);//计算记录偏移量
$page = new \Think\Page($count, $pagesize);
$page = $page->show();
$this->assign('page', $page);
$data=M('article a')->join("left join __CATEGORY__ b on a.sid=b.id")->field("a.*,b.name")->where($condition)->order("aid desc")->limit($offset . ',' . $pagesize)->select();
foreach ($data as $key=>$value){
$arr=$value['content'];
$arr=explode(" ",$arr);
$arr=explode("=",$arr[2]);
$arr=str_replace('"', '', $arr[1]);
$data[$key]['content']=$arr;
}
$this->assign("data",$data);
$this->assign("cat1",$cat1);
$this->assign("cat2",$cat2);

  

TP多条件sql查询,分组排序的更多相关文章

  1. SQL语句分组排序,多表关联排序

    SQL语句分组排序,多表关联排序总结几种常见的方法: 案例一: 在查询结果中按人数降序排列,若人数相同,则按课程号升序排列? 分析:单个表内的多个字段排序,一般可以直接用逗号分割实现. select ...

  2. 不简单的SQL查询和排序语句

    真不简单!! 一:使用select语句进行查询 语法: SELECT    <列名> FROM      <表名> [WHERE    <查询条件表达式>] [OR ...

  3. 一条Sql语句分组排序并且限制显示的数据条数

    如果我想得到这样一个结果集:分组排序,并且每组限定记录集的数量,用一条SQL语句能办到吗? 比如说,我想找出学生期末考试中,每科的前3名,并按成绩排序,只用一条SQL语句,该怎么写? 表[TScore ...

  4. SQL查询结果排序

    <第二章:查询结果排序>1:以指定的次序返回查询结果条件:显示部门10中员工名字,职位和工资并按照工资升序排列:升序asc   降序descSELECT ename,job,sal FRO ...

  5. SQL之分组排序取top n

    转自:http://blog.csdn.net/wguangliang/article/details/50167283 要求:按照课程分组,查找每个课程最高的两个成绩. 数据文件如下: 第一列no为 ...

  6. sql语句分组/排序/计算总数/连接等sql语句书写

    1.什么是表连接? 答:比如两张表,要获取的信息来自两张表,就需要通过外键的形式进行两张表的连接.最后产后组合信息. 表连接是通过join连接的.表连接说白了就是产生一个大表.表连接也都是用于查询上的 ...

  7. Sql sever 分组排序

    维护人事的时候人事局要求加入一个新功能,详细需求例如以下:加入的人员在同一个单位的依照顺序编号而且单位也要实现时间排序,也就是说有两个排序,第一单位名称排序.先创建的一直在前.然后依照创建时间依次排序 ...

  8. sql server 分组排序

    环境: sql server 2012 语法 select ROW_NUMBER() over(partition BY 分组字段 order by 排序字段),* as rowNums from 表 ...

  9. Coldfusion Sql查询分组输出

    <cfoutput query="myQry" group="date"> #date# <cfoutput> #detail# < ...

随机推荐

  1. cxGrid 使用指南 1

    1:cxgrid是应该数据关联的控件,类似dbgrid.2:一般用来查阅表信息,如果要修改的话,直接在上面编辑或添加 非常不方便通常要放几个EDit来对选中的记录进行编辑或添加记录. 因为表一般都有主 ...

  2. 时间查询缺少部分数据 mvc 解决方案

    前情提要: 在c# mvc EF模式下 普通的列表展示页面,采用form提交的,后台视同request对象接收,如果涉及到时间搜索的情况,经常会搞错,现在明确一下怎么做. 一:Request /// ...

  3. HDU 5157 Harry and magic string(回文树)

    Harry and magic string Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/O ...

  4. ASP.Net请求处理机制初步探索之旅 - Part 2 核心(转)

    开篇:上一篇我们了解了一个请求从客户端发出到服务端接收并转到ASP.Net处理入口的过程,这篇我们开始探索ASP.Net的核心处理部分,借助强大的反编译工具,我们会看到几个熟悉又陌生的名词(类):Ht ...

  5. HTML中条件注释的高级应用

    在页面头部加入 <!--[if lt IE 9]><html class="ie"><![endif]--> 可简单CSS Hack,IE6.I ...

  6. Java 常用语法和数据结构

    Collection 首先Java中的collection都是支持泛型和类型安全 由于Java单根继承, 所以不指定, 可以在collection里面放任何对象, collection会都当作obje ...

  7. 如何在 window 上面输入特殊字符?

    打开 字符映射表 程序 选中任意一个字符,它会在下方显示该字符的 16进制 转换16进制至10进制,并在输入法打开的状态下,按住 Alt 键输入 10 进制数值即可.

  8. mysql以下c连接mysql数据库

    1.安装sudo yum install mysql-devel  安装组件和库 2. #include <stdio.h> #include <stdlib.h> #incl ...

  9. 收藏:几种开源许可证的区别!——By 阮一峰制作

    乌克兰程序员Paul Bagwell,画了一张分析图,下面是阮一峰制作的中文版,非常棒,绝对的好东西,收藏这张图供日后查看:

  10. 使用.gitignore忽略文件

    单个项目配置 在.git文件夹同目录下打开git bash,执行命令: touch .gitignore 生成“.gitignore”文件. 在”.gitignore” 文件里输入你要忽略的文件夹及其 ...