i have interrogazione funzionale in MySql:Dottrina sottoquery in InnerJoin
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
ho scritto il codice dottrina nella sfGuardUserTable Classe:
$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;
sta dando l'errore Impossibile trovare la classe SELEZIONA :(si prega di aiuto Grazie in anticipo
Perché è necessario astrarre la query in questo modo? Basta digitare come persone normali. –
U R DOIN 'IT WRONG. Non hai bisogno di Doctrine per tali query ('$ q-> seleziona ('t1.won, e1.dtot, u.username, u.country, r.points, r.rank')'). – develop7
@ tor Valamo: potresti guidarmi a scrivere come al solito. Voglio dire, questo è l'unico modo che conosco perché non voglio eseguire più di una query per lo stesso compito. –