2011-11-08 3 views
0

J'ai une requête où je veux commander pour une sous-sélection qui est un ajoutDoctrine pour la requête en somme

$this->queryObj = Doctrine_Query::create() 
    ->select('l.*') 
    ->addSelect('(SELECT count(*) FROM LeagueMatch m LEFT JOIN m.UserA a LEFT JOIN m.UserB b WHERE m.league_id = ? AND m.user_id_a=l.user AND m.result_accepted=1 AND m.isOneOnOneMatch = true OR m.league_id = ? AND m.user_id_b=l.user AND m.isOneOnOneMatch = true AND m.result_accepted=1) as numberofmatches') 
    ->addSelect('(SELECT sum(m4.result_a) FROM LeagueMatch m4 
        LEFT JOIN m4.UserA a4 
        LEFT JOIN m4.UserB b4 
        WHERE m4.league_id = ? AND m4.user_id_a=l.user AND m4.isOneOnOneMatch = true AND m4.result_accepted=1) as winresults1') 
    ->addSelect('(SELECT sum(m5.result_b) FROM LeagueMatch m5 
        LEFT JOIN m5.UserA a5 
        LEFT JOIN m5.UserB b5 
        WHERE m5.league_id = ? AND m5.user_id_b=l.user AND m5.isOneOnOneMatch = true AND m5.result_accepted=1) as winresults2') 
    ->where('l.league = ?', $id) 
    ->from('LeagueUser l')->orderBy('(winresults1 + winresults2) DESC')->execute(array(HERE_ARE_MY_VALUES)); 

Cette partie « orderBy ('(winresults1 + winresults2) » ne fonctionne pas et je ne . sais pourquoi Sa ne me montrant une erreur, la syntaxe est ok, mais mon résultat est l'ordre pas wresult 1 + 2

+0

ne devriez-vous pas ajouter le respectif lias à 'orderBy ('(winresults1 + winresults2) ...' – samura

+0

pouvez-vous faire un exemple? – Androidewbie

+0

ont toujours besoin d'aide. quelques idées ici? – Androidewbie

Répondre

0

Essayez ce pas sûr que cela fonctionne, mais moi a eu lieu;.)

$this->queryObj = Doctrine_Query::create() 
    ->select('l.*') 
    ->addSelect('(SELECT count(*) FROM LeagueMatch m LEFT JOIN m.UserA a LEFT JOIN m.UserB b WHERE m.league_id = ? AND m.user_id_a=l.user AND m.result_accepted=1 AND m.isOneOnOneMatch = true OR m.league_id = ? AND m.user_id_b=l.user AND m.isOneOnOneMatch = true AND m.result_accepted=1) as numberofmatches') 
    ->addSelect('(SELECT sum(m4.result_a) as total FROM LeagueMatch m4 
        LEFT JOIN m4.UserA a4 
        LEFT JOIN m4.UserB b4 
        WHERE m4.league_id = ? AND m4.user_id_a=l.user AND m4.isOneOnOneMatch = true AND m4.result_accepted=1) as winresults1') 
    ->addSelect('(SELECT sum(m5.result_b) as total FROM LeagueMatch m5 
        LEFT JOIN m5.UserA a5 
        LEFT JOIN m5.UserB b5 
        WHERE m5.league_id = ? AND m5.user_id_b=l.user AND m5.isOneOnOneMatch = true AND m5.result_accepted=1) as winresults2') 
    ->where('l.league = ?', $id) 
    ->from('LeagueUser l')->orderBy('(winresults1.total + winresults2.total) DESC')->execute(array(HERE_ARE_MY_VALUES));