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

Activerecord:extraiga columnas específicas y recuentos de asociaciones de asociaciones

Usar una consulta de selección

Account.
  joins(schedules: :impressions).
  select("accounts.name as account_name, 
          schedules.date as schedule_date, 
          schedules.summary as schedule_summary, 
          count(impressions.id) as schedule_impression_count" ).
  group("accounts.name,schedules.date,schedules.summary") 

Debería hacerlo en una sola consulta, entonces los objetos responderán al alias de la columna como schedule_date y schedule_impression_count

Si necesita usar estos objetos para otros datos en la misma vista, entonces Account.eager_load(schedules: :impressions) también debería funcionar y también ejecutará una sola consulta.