Ma table votes
ressemble à ceci:requête SQL pour obtenir "score vote"
id: integer
vote: boolean
voteable_id: integer
voteable_type: string
voter_id: integer
voter_type: string
La colonne vote
détermine si la ligne représente un "up vote" (vote = true
) ou un "vote down" (vote = false
) .
voteable_type
est la classe de la chose étant votée, voteable_id
est l'identifiant de la chose d'être voté, voter_type
est la classe de l'électeur, et voter_id
est l'identifiant de l'électeur.
Ce que je besoin est une requête pour obtenir le haut nposts
dans l'ordre décroissant par « score vote », où « score de vote » est défini comme (le nombre maximum de votes le poste a) - (la nombre de votes négatifs que le poste a).
points bonus si votre solution ne me demande pas de recourir à find_by_sql()
(je travaille dans Rails)
plus de points bonus si votre solution fonctionne de la même manière SQLite et PostgreSQL (si il est plus important que cela fonctionne dans PostgreSQL).
Quelle base de données? . – cletus
Vous rendriez également votre vie beaucoup plus facile si vous stockez ceci comme 1/-1 au lieu de vrai/faux aussi bien. – cletus
Err, ne serait-ce pas 1 et 0? – Alex