私の知る限り、group_concat
はありません。 Railsでも同等ですが、includes
を使用できます それを行うには:
continents = Continents
.joins(:countries, :event_locations)
.includes(:countries)
.group("continents.code")
continents.each do |continent|
continent.countries.join(",")
end
これにより生成されるクエリは2つだけです。1つほど良くはありませんが、Railsが「group_concat」なしで実行できるよりも優れていると思います。他の方法は次のようになります:
Country
.select("countries.id, GROUP_CONCAT(countries.name) as grouped_name")
.joins(:continents, :event_locations)
.group("continents.code")
ただし、そうする場合は、データベースベンダーに応じて変更する必要があります。
- MySQL :group_concat(countries.name)
- PostgreSQL :string_agg(countries.name、'、')
- オラクル :listagg(countries.name、'、')