Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como posso usar GROUP_CONCAT no Rails?


Desde que eu saiba, não há group_concat equivalente em Rails, mas você pode usar includes fazer isso:
continents = Continents
  .joins(:countries, :event_locations)
  .includes(:countries)
  .group("continents.code")

continents.each do |continent| 
  continent.countries.join(",")
end

Isso produzirá apenas 2 consultas - eu sei, não é tão bom quanto uma, mas acho que é o melhor que o Rails pode fazer sem o "group_concat". A outra forma será algo assim:
Country
  .select("countries.id, GROUP_CONCAT(countries.name) as grouped_name")
  .joins(:continents, :event_locations)
  .group("continents.code")

Mas se você fizer isso, precisará alterar de acordo com o fornecedor do banco de dados.
  • MySQL :group_concat(países.nome)
  • PostgreSQL :string_agg(países.nome, ',')
  • Oráculo :listagg(países.nome, ',')