Existe-t-il un moyen d'utiliser la clause HAVING d'une autre manière sans utiliser group by. J'utilise des rails et voici un exemple de scénario du problème auquel je suis confronté. Dans les rails, vous pouvez utiliser la fonction Model.find (: all,: select, conditions,: group) pour obtenir des données. Dans cette requête, je peux spécifier une clause having dans le groupe: param. Mais que se passe-t-il si je n'ai pas une clause group by mais que je veux avoir une clause having dans le jeu de résultats.Rails Enregistrement actif Mysql find query Clause HAVING
Ex: permet de prendre une requête
select sum (x) en tant que a, b, c à partir de y où "groupe" de some_conditions b, c;
Cette requête a une agrégation sum() sur l'un des champs. Non s'il n'y a rien à agréger, alors mon résultat devrait être un ensemble vide. Mais mysql retourne une ligne NULL. Donc, ce problème peut être résolu en utilisant
sélectionnez somme (x) en tant que, b à partir de y où "certaines_conditions" groupe par b ayant une valeur NOT NULL;
mais que se passe-t-il si je n'ai pas de clause group by ?? une requête comme ci-dessous
Sélectionnez la somme (x) en tant que, b à partir de y où "quelques_conditions"; Donc comment spécifier que somme (x) ne devrait pas être NULL?
Toute solution qui retournerait un ensemble vide dans ce cas au lieu d'une ligne NULL aidera et cette solution devrait être réalisable dans les rails.
Nous pouvons utiliser les sous-requêtes pour obtenir cette condition de travailler avec sumthin comme celui-ci
select * from ((sélectionner somme (x) comme b de y où "some_condition") comme subq) où subq.b est non nul ;
mais y a-t-il une meilleure façon de le faire à travers sql/rails ??
@marcus adams - qui fonctionne! Merci! – meetraghu28