Mysql
 sql >> база данни >  >> RDS >> Mysql

Rails ActiveRecord сортиране по брой асоциации на таблица за присъединяване

Опитайте следното:

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

За да включите ресурси с 0 гласа, използвайте външно присъединяване. Ако примерът по-долу не работи както е, ще трябва да промените изявлението за присъединяване, за да се присъедините към правилните отношения.

@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. Изберете данни между диапазон от дата/час

  2. Внедряване на релационни бази данни на MySQL в Ubuntu 12.04 (Precise Pangolin)

  3. MySQL Workbench не може да се свърже с локална услуга MySQL на MAC OSX

  4. MySQL:ALTER IGNORE TABLE дава нарушение на ограничението за целостта

  5. Изберете записи по време в интервал между 12:00:00 и 18:00:00 всеки ден