Pourquoi ces deux requêtes produisent-elles des résultats différents?
FbGroup.where('fb_groups.id IN (?)', ids).length > 300 FbGroup.joins(:fb_posts).where('fb_groups.id IN (?)', ids).length > 500
3 Réponses :
Pourquoi ces deux requêtes produisent-elles des résultats différents? P> blockQuote>
La jointure peut entraîner des enregistrements 1: N (un à plusieurs). Par exemple. Si un
fbgroup code> a deux
FBPost code>, vous obtiendrez deux enregistrements lorsque vous vous joignez. p>
Le résultat souhaité est de rejoindre FB_Posts mais avant de rejoindre, je voudrais filtrer FB_Groups par des ID spécifiques. Comment puis-je faire ça? P> blockQuote>
Votre deuxième requête fait déjà cela. Lorsque vous filtrez avec la jointure ou rejoindre, puis filtrez dans une requête extérieure, vous obtiendriez toujours les mêmes résultats. P>
Mon résultat souhaité est de rejoindre
fb_poststs code> mais avant de rejoindre, je voudrais filtrer
fb_groups code> par des ID spécifiques. Comment puis-je faire ça? P>
J'ai utilisé
fb_groups code> avec
ID code>
1 code>,
2 code> et
3 code> juste pour Exemple P>
FbGroup.where(id: [1, 2, 3]).joins(:fb_posts).count
Je pense que c'est une duplication des enregistrements dans des jointures. Vous devriez utiliser groupe_by avec des jointures pour l'éliminer. Essayez, veuillez corriger si je me trompe. P> p>