Lehre Unterabfrage in InnerJoin

habe ich funktionale Abfrage in 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

schrieb ich Lehre-code in sfGuardUserTable Klasse:

$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;

es gibt Fehler nicht finden Konnte-Klasse WÄHLEN 🙁 bitte helfen Sie mir. Vielen Dank im Voraus.

Warum ist es notwendig zu abstrahieren, die Abfrage so? Nur geben Sie es aus, wie normale Menschen.
U R DOIN' SIE FALSCH. Benötigen Sie keine Lehre für solche Abfragen ($q->select(' t1.won, e1.dtot, u.username,u.country,r.points,r.rank')).
tor Valamo : könnten Sie mich, wie Sie schreiben, wie normal. ich meine, das ist der einzige Weg, ich weiß das, weil ich dun ausführen wollen mehrere Anfragen für die gleiche Aufgabe.

InformationsquelleAutor S.Sid | 2010-01-06

Schreibe einen Kommentar