sql >> Database >  >> RDS >> Oracle

Hoe kan ik GROUP_CONCAT gebruiken in Rails?

Zolang ik weet, is er geen group_concat equivalent in Rails, maar u kunt includes . gebruiken om dat te doen:

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

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

Dit zal slechts 2 queries opleveren - ik weet het, is niet zo goed als één, maar ik denk dat dat het beste is dan Rails kan doen zonder "group_concat". De andere manier zal zoiets zijn:

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

Maar als u dat doet, moet u zich aanpassen aan uw databaseleverancier.

  • MySQL :group_concat(country.name)
  • PostgreSQL :string_agg(landen.naam, ',')
  • Oracle :listagg(landen.naam, ',')


  1. SQL-server negeer hoofdletters in een waar-expressie

  2. Mysql Unie tijd V.S. afzonderlijke zoekopdracht één voor één

  3. Optimaliseer MySql-query:te traag bij het bestellen

  4. Hoe een afbeelding van PostgreSql in te voegen en op te halen met C#