Je les tableaux suivants:MySQL/Ruby on Rails - Comment "SUM" dans: has_many cas
Utilisateur: has_many Achats
Article: has_many Achats
article a une colonne "montant" (peut être + ou -) et je dois trouver tous les utilisateurs qui ont une somme positive de "Item.amounts" (sur tous les achats que chacun a fait).
A quoi ressemble cette requête? (Je ne suis pas sûr de savoir comment gérer "SUM" correctement, dans ce cas.)
J'ai commencé avec ce qui suit, mais évidemment, c'est faux ... (il ne comprendrait pas les achats qui ont un point négatif avec un Item.amount ...)
@users = User.find (: tous,
: include => {: achats =>: item},
: select => « SOMME (item.amount) "
: order =>" ... "
: conditions =>" ... ",
: group => "users.id",
: ayant => "SUM (item.amount)> 0" )
Merci pour votre aide avec ça!
Tom
Merci - cela fonctionne au besoin! 1 question précédente: quelle est l'explication que cela fonctionne avec ": jointures" mais pas avec ": include"? – TomDogg
La clause ': include' utilise' LEFT OUTER JOIN', ce qui entraîne des montants NULL pour les utilisateurs sans éléments. La fonction SUM n'aime pas NULL. En dehors de cela, dans cette situation ': joins' est plus approprié que': include'. –
Super, merci beaucoup! – TomDogg