博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql if对数据进行处理 having对数据进行查询 thinkphp中的exp支持更复杂的where查询...
阅读量:6832 次
发布时间:2019-06-26

本文共 2083 字,大约阅读时间需要 6 分钟。

很多时候,数据库获取的信息并不是我们最终想要的,需要通过if进行处理。

where支持查询

having支持后查询(查询后的数据,再筛选)

代码如下:

if ($this->_post('dosearch','isset')) { // 搜索            if ($s_name = $this->_post('s_name','isset')) {                $where['a.name'] = array('like','%'.$s_name.'%');                $this->assign('s_name',$s_name);            }            if ($s_category = $this->_post('s_category','isset')) {                $where['a.category_id'] = $s_category;                $this->assign('s_category',$s_category);            }            if ($s_status = $this->_post('s_status','isset')) {                $having ='status ='.$s_status; // 只支持字符串                $this->assign('s_status',$s_status);            }        }

if

// 获取商铺        $subQuery = M('User')->where(array('agent_id'=>$this->agent_id,'status'=>1))                             ->field('id')                             ->select(false);        $where['a.user_id'] = array('exp','in '.$subQuery);        $where['a.status'] = 1;        $list       = M()->table('sh_store a')                    ->join('sh_goods b on a.id = b.store_id')                    ->join('sh_category c on a.category_id = c.id')                    ->join('sh_mall_shop d on a.id = d.store_id and d.mall_id = '.$this->mall['id'])                    ->where($where)                    ->group('a.id')                    ->having($having)                    ->field('a.id as store_id,a.user_id,a.name as store_name,c.name as category_name,a.logo,count(b.id) as goods_count,if(d.id > 0,"1","2") as status')                    ->select();        $this->assign('list',$list);

sql原句如下:

SELECT a.id as store_id,a.user_id,a.name as store_name,c.name as category_name,a.logo,count(b.id) as goods_count,if(d.id > 0,"1","2") as status FROM sh_store a LEFT JOIN sh_goods b on a.id = b.store_id LEFT JOIN sh_category c on a.category_id = c.id LEFT JOIN sh_mall_shop d on a.id = d.store_id and d.mall_id = 9 WHERE ( a.category_id = '47' ) AND ( (a.user_id in ( SELECT `id` FROM `sh_user` WHERE ( `agent_id` = 13 ) AND ( `status` = 1 ) )) ) AND ( a.status = 1 ) GROUP BY a.id HAVING status =1
 
 
 

转载地址:http://wuikl.baihongyu.com/

你可能感兴趣的文章
Oracle的体系结构(三)
查看>>
nginx + django 两种配置模式
查看>>
linux运维学习之Oracle数据库的安装和扩展小优化
查看>>
linux-mysql
查看>>
招人已了,招人心得跟47道面试题加答案放出来
查看>>
珍爱生命,拒绝session。
查看>>
使用JDK原生api进行网络请求并比较
查看>>
oracle
查看>>
1-交换通信:单臂路由实验+DHCP
查看>>
Apache Cassandra和Apache Ignite:通过Ignite增强Apache Cassandra
查看>>
Python全栈初级 中级 高级,资料无偿分享,希望能对大家有所帮助
查看>>
[API 开发管理] 分享几个 eoLinker 实用操作技巧
查看>>
网站安全问题的出现及解决方法
查看>>
java io FilterInputStream BufferedInputStream
查看>>
[转]shell脚本中echo显示内容带颜色
查看>>
有趣的GodMode
查看>>
TypeScript 类
查看>>
萌新入职注意事项-没WIFI也要看的秘技
查看>>
服务器压力测试软件 .
查看>>
循环队列的实现
查看>>