sql >> Base de Datos >  >> RDS >> Mysql

Ordenar por dentro del grupo por en Doctrine 2

Terminé resolviéndolo con una subconsulta correlacionada:

$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 esa manera, la ordenación ignora los ArticleView que no sean los más recientes para un artículo determinado. Aunque supongo que esto funciona bastante mal en relación con las otras soluciones de SQL sin formato, cualquier respuesta con un mejor rendimiento sería muy apreciada :).