sql >> Databasteknik >  >> RDS >> Oracle

Hur kan jag använda GROUP_CONCAT i Rails?

Så länge jag vet finns det ingen group_concat motsvarande i Rails, men du kan använda includes för att göra det:

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

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

Detta kommer att producera endast 2 frågor - jag vet, är inte så bra som en, men jag tror att det är det bästa än Rails kan göra utan "group_concat". Det andra sättet kommer att vara något liknande:

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

Men om du gör det måste du ändra enligt din databasleverantör.

  • MySQL :group_concat(countries.name)
  • PostgreSQL :string_agg(countries.name, ',')
  • Oracle :listagg(countries.name, ',')


  1. PHP Mysql sökfråga

  2. jBPM 6.5 + Tomcat 8 + Bitronix Transaction + Oracle 11G-konfiguration | Kunde inte utföra sessionen java.lang.NullPointerException

  3. PostgreSQL aggregatfunktion över intervall

  4. Sökfunktion med flera kriterier - PHP/MySQL