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
  • 相关阅读:
    双六游戏 扩展欧几里得
    线段上的格点 辗转相除法(GCD)
    POJ 2395 Out of Hay
    POJ 2377 Bad Cowtractors
    POJ 1258 Agri-Net
    POJ 3169 Layout
    POJ 3723 Conscription
    次最短路径 POJ 3255 Roadblocks
    最小生成树求法 Prim + Kruskal
    如何将页脚固定在页面底部,4中方法 转载自:W3CPLUS
  • 原文地址:https://www.cnblogs.com/cexm/p/6293176.html
Copyright © 2011-2022 走看看