sql >> Databasteknik >  >> RDS >> Mysql

Ordna efter inom gruppen efter i Doktrin 2

Det slutade med att jag löste det med en korrelerad underfråga:

$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å så sätt ignorerar sorteringen andra ArticleView än de senaste för en given artikel. Även om min gissning är att detta fungerar ganska dåligt i förhållande till de andra råa SQL-lösningarna - alla svar med bättre prestanda skulle fortfarande uppskattas mycket :).




  1. JDBCExceptionReporter - SQL-fel:0, SQLState:08001

  2. Hur man migrerar databaser till din återförsäljarserver

  3. Flytande eller decimal för priser?

  4. städer och avstånd efter latitud-longitud