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

Rails ActiveRecord sắp xếp theo số lượng liên kết bảng tham gia

Hãy thử những cách sau:

@resources = Resouce.select("resources.*, COUNT(votes.id) vote_count")
                    .joins(:votes)
                    .where(language_id: "ruby")
                    .group("resources.id")
                    .order("vote_count DESC")

@resources.each { |r| puts "#{r.whatever}  #{r.vote_count}" }

Để bao gồm các tài nguyên có 0 phiếu bầu, hãy sử dụng liên kết ngoài. Nếu ví dụ dưới đây không hoạt động, bạn sẽ phải thay đổi câu lệnh kết hợp để kết hợp trên các quan hệ chính xác.

@resources = Resource.select("resources.*, COUNT(votes.id) vote_count")
                     .joins("LEFT OUTER JOIN votes ON votes.votable_id = resources.id AND votes.votable_type = 'Resource'")
                     .where(language_id: "ruby")
                     .group("resources.id")
                     .order("vote_count DESC")


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL có hỗ trợ ngày lịch sử (như 1200) không?

  2. Mysql - Làm cách nào để sắp xếp các kết quả theo các hàng xen kẽ (1,2,3, 1, 2, 3, 1, 2, 3,), có được không?

  3. Giúp đỡ Openfire. Cơ sở dữ liệu tùy chỉnh (bảng, trường)

  4. Cách sử dụng các câu lệnh chuẩn bị sẵn trong Zend Framework

  5. Laravel Raw DB Chèn hàng bị ảnh hưởng