sql >> Database teknologi >  >> RDS >> Mysql

Bestil efter inden for gruppe efter i doktrin 2

Jeg endte med at løse det med en korreleret underforespørgsel:

$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)')

På den måde ignorerer sorteringen andre end de seneste for en given artikel. Selvom mit gæt er, at dette præsterer ret dårligt i forhold til de andre rå SQL-løsninger - ethvert svar med bedre ydeevne ville stadig være meget værdsat :).




  1. Oprettelse af en database i Cloud Sites

  2. Vælg top 10 poster for hver kategori

  3. Oracle pivot med underforespørgsel

  4. tilpasset php-forum - viser nye/ulæste indlæg