zoukankan      html  css  js  c++  java
  • ThinkPHP连贯查询之子查询

    $subQuery1 = D('device_factory df')->join('inner join device d on d.factory=df.factory')
            ->field("df.name as '机型品牌',d.factory,model,type,case when d.name='' then d.orgin else d.name end as name")
            ->select(false);
    select df.name as '机型品牌',d.factory,model,type,case when d.name='' then d.orgin else d.name end as name from device_factory df inner join device d on d.factory=df.factory

    第二个子查询

    $subQuery1 = D('device_factory df')->join('inner join device d on d.factory=df.factory')
            ->field("df.name as '机型品牌',d.factory,model,type,case when d.name='' then d.orgin else d.name end as name")
            ->select(false);
            
    $c = D()->table("record r,($subQuery1)b")
                ->field('count(*) as times,b.*')->where(
                'r.device&0xffff=b.model and r.device>>16&0xffff=b.factory'
                        )->group('device&0xffff')->select(false);
    select count(*) as times, b.* from record r ,(select df.name as '机型品牌',d.factory,model,type,case when d.name='' then d.orgin else d.name end as name from device_factory df inner join device d on 
    d.factory=df.factory)b where r.device&0xffff=b.model and r.device>>16&0xffff = b.factory group by device&0xffff

    总查询

    $subQuery1 = D('device_factory df')->join('inner join device d on d.factory=df.factory')
            ->field("df.name as '机型品牌',d.factory,model,type,case when d.name='' then d.orgin else d.name end as name")
            ->select(false);
            
    $c = D()->table("record r,($subQuery1)b")
        ->field('count(*) as times,b.*')->where(
        'r.device&0xffff=b.model and r.device>>16&0xffff=b.factory'
        )->group('device&0xffff')->select(false);
            
    $d = D()->table("(select @rank:=0)rank,($c)c")
        ->field('@rank:=@rank+1 as rank,c.*')
        ->order('c.times desc')->select();
    SELECT @rank:=@rank+1 as rank,c.* FROM
    (select @rank:=0)rank,(
    SELECT count(*) as times,
    b.* FROM record r,
    (SELECT df.name as '机型品牌',d.factory,`model`,`type`,case when d.name='' then d.orgin 
    else d.name end as name FROM device_factory df inner join device d on d.factory=df.factory  )b 
    WHERE ( r.device&0xffff=b.model and r.device>>16&0xffff=b.factory ) GROUP BY device&0xffff )c ORDER BY c.times desc
  • 相关阅读:
    window系统中,解决Pycharm 文件更改目录后,执行路径未更新问题(转)
    yum安装软件报错–skip-broken(卸载的时候一直报错:未安装软件包)
    selenium之Chrome浏览器与chromedriver对应关系和下载
    Python 第三方库 批量下载安装包,离线批量安装Python第三方库
    UIpath 循环读取IMAP邮件,并保存附件
    UIpath 中如何使用 正则表达式
    用python实现队列,堆栈
    python-反射
    Python基础-父类对子类的约束
    Python基础-类的继承顺序
  • 原文地址:https://www.cnblogs.com/cexm/p/6293176.html
Copyright © 2011-2022 走看看