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
  • 相关阅读:
    解决淘淘第三天无法显示图片
    包名与工程名
    明明有这个类却提示出错
    出错,网页显示不出内容
    配置域名
    本地jar包添加到maven仓库
    POJ1704 Georgia and Bob 博弈论 尼姆博弈 阶梯博弈
    POJ 2960 S-Nim 博弈论 sg函数
    sg函数总结
    POJ 2425 A Chess Game 博弈论 sg函数
  • 原文地址:https://www.cnblogs.com/cexm/p/6293176.html
Copyright © 2011-2022 走看看