जब तक मुझे पता है, कोई group_concat
नहीं है रेल में समकक्ष, लेकिन आप includes
. का उपयोग कर सकते हैं ऐसा करने के लिए:
continents = Continents
.joins(:countries, :event_locations)
.includes(:countries)
.group("continents.code")
continents.each do |continent|
continent.countries.join(",")
end
यह केवल 2 प्रश्नों का उत्पादन करेगा - मुझे पता है, एक के रूप में इतना अच्छा नहीं है, लेकिन मुझे लगता है कि यह "group_concat" के बिना रेल की तुलना में सबसे अच्छा है। दूसरा तरीका कुछ ऐसा होगा:
Country
.select("countries.id, GROUP_CONCAT(countries.name) as grouped_name")
.joins(:continents, :event_locations)
.group("continents.code")
लेकिन अगर आप ऐसा करते हैं, तो आपको अपने डेटाबेस विक्रेता के अनुसार बदलने की जरूरत है।
- MySQL :group_concat(देशों का नाम)
- PostgreSQL :string_agg(countries.name, ',')
- ओरेकल :listagg(countries.name, ',')