代码之家  ›  专栏  ›  技术社区  ›  Sadaf Sid

innerjoin中的条令子查询

  •  12
  • Sadaf Sid  · 技术社区  · 16 年前

    我在MySQL中有功能查询:

    select t.won,e.etot, s.username,s.country,r.points,r.rank FROM sf_guard_user s 
    INNER JOIN marks r ON r.user_id = s.id 
    inner join (select t.user_id,count(t.user_id)as won from topper t group by t.user_id) t on t.user_id=s.id
    inner join (select e.user_id,count(e.user_id)as etot from exams e group by e.user_id) e on e.user_id=s.id
    ORDER BY r.rank asc
    

    我在sfguardUserTable类中编写了条令代码:

    $q= $this->createQuery('u');
    
            $wq =$q->createSubquery()
             ->select('t.user_id,count(t.user_id) won')
             ->from('Topper t')
             ->groupBy('t.user_id');
    
            $dq = $q->createSubquery()
             ->select('e.user_id,count(e.user_id) etot')
             ->from('Exams d')
             ->groupBy('d.user_id');
    
            $q->select(' t1.won, e1.dtot, u.username,u.country,r.points,r.rank')
             ->innerJoin ('u.Marks r ON r.user_id = u.id')
             ->innerJoin ('u.('.$wq->getDql().') t1 on t1.user_id=u.id')
             ->innerJoin ('u.'.$dq->getDql().' e1 on e1.user_id=u.id')
             ->orderBy('r.rank asc');
    
            //echo $q->getSql();
            return $q;
    

    出现错误,找不到班级选择:(请帮助我。事先谢谢。

    1 回复  |  直到 15 年前
        1
  •  10
  •   Sadaf Sid    16 年前

    我试图通过条令行SQL查询选项及其工作直接执行我的自定义查询:) 我喜欢在这里分享:

    $q = new Doctrine_RawSql();
            $q->select('{t.won}, {e.etot}, {s.username},{s.country},{r.marks},{r.ranks}');
            $q->from('sf_Guard_User s INNER JOIN marks r ON r.user_id = s.id inner join (select t.id,t.user_id,count(t.user_id)as won from topper t group by t.user_id) t on t.user_id=s.id inner join (select d.id,d.user_id,count(e.user_id)as etot from exams e group by e.user_id) e on e.user_id=s.id ORDER BY r.rank asc');
            $q->addComponent('s', 'sfGuardUser s');
            $q->addComponent('r', 's.Marks r');
            $q->addComponent('t', 's.Topper t');
            $q->addComponent('e', 's.Exams e');
            return $q;
    

    为了更多的帮助 read it .

    推荐文章