Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php InnerJoin中的条令子查询_Php_Symfony1_Doctrine - Fatal编程技术网

Php InnerJoin中的条令子查询

Php InnerJoin中的条令子查询,php,symfony1,doctrine,Php,Symfony1,Doctrine,我在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 joi

我在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;

它给出了一个错误,找不到类SELECT:(请帮助我。提前感谢。

我试图通过命令行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;

获取更多帮助。

为什么需要这样抽象查询?就像普通人一样把它打出来,你做错了。这样的查询不需要条令(
$q->select('t1.won,e1.dtot,u.username,u.country,r.points,r.rank')
)。@tor Valamo:你能指导我如何像平常一样写作吗。我的意思是,这是我知道的唯一方法,因为我不想对同一个任务执行多个查询。我不确定这是否是最佳解决方案,但它对我也适用:)。