Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Làm cách nào để sử dụng GROUP_CONCAT trong Rails?

Miễn là tôi biết, không có group_concat tương đương trong Rails, nhưng bạn có thể sử dụng includes để làm điều đó:

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

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

Điều này sẽ chỉ tạo ra 2 truy vấn - tôi biết, không quá tốt bằng một truy vấn, nhưng tôi nghĩ đó là điều tốt nhất mà Rails có thể làm nếu không có "group_concat". Cách khác sẽ giống như thế:

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

Nhưng nếu bạn làm điều đó, bạn cần phải thay đổi tùy theo nhà cung cấp cơ sở dữ liệu của mình.

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tìm nạp một số hàng cố định trong truy vấn SQL trong Oracle

  2. Tôi có thể sao chép:Bản ghi giả CŨ và:MỚI vào / vào một thủ tục được lưu trữ Oracle không?

  3. Triển khai cx_Oracle trên các phiên bản khác nhau của Oracle Client

  4. Một ràng buộc kiểm tra có thể liên quan đến một bảng khác không? Oracle

  5. Chuyển đổi một chuỗi thành ngày tháng và nâng cao một ngoại lệ khi chuỗi đã cho không hợp lệ