开发者社区> 桃子红了呐> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

mysql if对数据进行处理 having对数据进行查询 thinkphp中的exp支持更复杂的where查询

简介:
+关注继续查看

很多时候,数据库获取的信息并不是我们最终想要的,需要通过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 



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
MYSQL事务嵌套,PHP事务嵌套,THINKPHP事务嵌套
MYSQL事务嵌套,PHP事务嵌套,THINKPHP事务嵌套
0 0
高并发简单解决方案————redis队列缓存+mysql 批量入库(ThinkPhP)
源码地址:https://github.com/Tinywan/PHP_Experience 问题分析 问题一:要求日志最好入库;但是,直接入库mysql确实扛不住,批量入库没有问题,done。【批量入库和直接入库性能差异】 问题二:批量入库就需要有高并发的消息队列,决定采用redis list 仿真实现,而且方便回滚。
2072 0
ThinkPHP学习(三)配置PHP5支持MySQL,连接MySQL数据库
上一篇:ThinkPHP学习(二)理清ThinkPHP的目录结构及访问规则,创建第一个控制器 配置PHP5支持MySQL 打开PHP配置文件“F:\PHP\php5328Win32\php.
559 0
Linux安装Mysql(图文解说详细版,安装包tar包版)
Linux安装Mysql(图文解说详细版,安装包tar包版)
0 0
Windows安装Mysql(图文解说详细版,无msi版本)
Windows安装Mysql(图文解说详细版,无msi版本)
0 0
Mac安装Mysql(图文解说详细版)
Mac安装Mysql(图文解说详细版)
0 0
使用docker安装mysql和redis
使用docker安装mysql和redis
0 0
【云原生】docker安装mysql实现主从复制
【云原生】docker安装mysql实现主从复制
0 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
让 MySQL 原生分布式触手可及
立即下载
好的 MySQL 兼容可以做到什么程度
立即下载
云数据库RDS MySQL从入门到高阶
立即下载