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

Renvoie chaque nième ligne de la base de données à l'aide d'ActiveRecord dans les rails

Je pense que vous recherchez une requête comme celle-ci :

SELECT * FROM (SELECT widgetstats.*, row_number() OVER () AS rownum FROM widgetstats ORDER BY id) stats WHERE mod(rownum,3) = 0

C'est difficile à construire avec ActiveRecord, vous pourriez donc être obligé de faire quelque chose comme :

@widgetstats = self.widgetstats.find_by_sql(
  %{
    SELECT * FROM
    (
      SELECT widgetstats.*, row_number() OVER () AS rownum FROM widgetstats ORDER BY id
    ) AS stats
    WHERE mod(rownum,3) = 0
  }
)

Vous souhaiterez évidemment modifier l'ordre utilisé et ajouter des clauses WHERE ou d'autres modifications en fonction de vos besoins.