sql >> Base de Datos >  >> RDS >> Oracle

¿Cómo puedo usar GROUP_CONCAT en Rails?

Hasta donde sé, no hay group_concat equivalente en Rails, pero puede usar includes para hacer eso:

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

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

Esto producirá solo 2 consultas; lo sé, no es tan bueno como uno, pero creo que es lo mejor que Rails puede hacer sin "group_concat". La otra forma será algo así:

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

Pero si hace eso, debe cambiar de acuerdo con el proveedor de su base de datos.

  • MySQL :group_concat(países.nombre)
  • PostgreSQL :string_agg(países.nombre, ',')
  • Oráculo :listagg(países.nombre, ',')