Oracle
 sql >> Database >  >> RDS >> Oracle

Come posso usare GROUP_CONCAT in Rails?

Per quanto ne so, non esiste group_concat equivalente in Rails, ma puoi usare includes per farlo:

continents = Continents
  .joins(:countries, :event_locations)
  .includes(:countries)
  .group("continents.code")

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

Questo produrrà solo 2 query - lo so, non è così buono come uno, ma penso che sia il meglio di quanto Rails possa fare senza "group_concat". L'altro modo sarà qualcosa del genere:

Country
  .select("countries.id, GROUP_CONCAT(countries.name) as grouped_name")
  .joins(:continents, :event_locations)
  .group("continents.code")

Ma se lo fai, devi cambiare in base al fornitore del tuo database.

  • MySQL :gruppo_concat(nome.paesi)
  • PostgreSQL :string_agg(nome.paesi, ',')
  • Oracolo :listagg(nome.paesi, ',')