Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Rails ActiveRecord mengurutkan berdasarkan jumlah asosiasi tabel gabungan

Coba yang berikut ini:

@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}" }

Untuk memasukkan sumber daya dengan 0 suara, gunakan gabungan luar. Jika contoh di bawah ini tidak berfungsi sebagaimana mestinya, Anda harus mengubah pernyataan bergabung untuk bergabung di seluruh relasi yang benar.

@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. Bagaimana cara membuat alias database di MySQL?

  2. Laravel + Vagrant =Akses ditolak untuk pengguna 'root'@'localhost'

  3. Cara menjalankan beberapa Kueri Pembaruan dalam satu pernyataan di PHP dan mySQL

  4. Gabungkan dua kueri untuk memeriksa duplikat di MySQL?

  5. integrasi spring 3, hibernate 3, maven dan mysql