sql >> Databáze >  >> RDS >> Mysql

Rails ActiveRecord seřazené podle počtu přidružení tabulky spojení

Zkuste následující:

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

Chcete-li zahrnout zdroje s 0 hlasy, použijte vnější spojení. Pokud níže uvedený příklad nefunguje tak, jak je, budete muset změnit příkaz joins, aby se spojil přes správné vztahy.

@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. Získání hodnocení PHP MYSQL dotazu na hodnocení na základě celkového součtu skóre

  2. Jak upgradovat MySQL 5.5 na 5.6 na Ubuntu 14.04

  3. získat obrázek typu mime

  4. Jak vložit řetězec, který obsahuje &