Mysql
 sql >> Base de données >  >> RDS >> Mysql

Trier par dans grouper par dans Doctrine 2

J'ai fini par le résoudre avec une sous-requête corrélée :

$qb
    ->select('a')
    ->from('Article', 'a')
    ->join('a.views', 'v')
    ->orderBy('v.viewDate', 'DESC')
    ->setMaxResults(20)

    // Only select the most recent article view for each individual article
    ->where('v.viewDate = (SELECT MAX(v2.viewDate) FROM ArticleView v2 WHERE v2.article = a)')

De cette façon, le tri ignore les ArticlesView autres que les plus récents pour un article donné. Bien que je suppose que cela fonctionne assez mal par rapport aux autres solutions SQL brutes - toute réponse avec de meilleures performances serait toujours grandement appréciée :).