Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak mogę używać GROUP_CONCAT w Railsach?

Tak długo, jak wiem, nie ma group_concat odpowiednik w Railsach, ale możesz użyć includes aby to zrobić:

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

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

Spowoduje to wygenerowanie tylko 2 zapytań - wiem, że nie jest tak dobre jak jedno, ale myślę, że jest to najlepsze niż Railsy mogą sobie poradzić bez "group_concat". W drugą stronę będzie mniej więcej tak:

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

Ale jeśli to zrobisz, musisz zmienić zgodnie z dostawcą bazy danych.

  • MySQL :group_concat(nazwa kraju)
  • PostgreSQL :string_agg(kraje.nazwa, ',')
  • Wyrocznia :listagg(nazwa.krajów, ',')


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Używasz zmiennych wiązania w SQL Plus z więcej niż jednym wierszem?

  2. Kompatybilność z oci8, php7 i Oracle 10.1

  3. Oracle - podział dat na ćwiartki

  4. Znajdź wersję/łaty serwera Weblogic w EBS R12.2/ Standalone Weblogic

  5. Obsługa wyjątków PL/SQL:nic nie rób (ignoruj ​​wyjątek)