Having et Where dans SQL ???

[Résolu/Fermé]
Signaler
-
 tessel75 -
Bonjour,
A la suite de changement de noms dans mes tables et l'obligation qui en est résultée de réécrire certaines requêtes SQL de mon code, je me rends compte que le convertisseur Access du format "graphique" ou "création" en SQL a remplacé des sélections de valeurs de champs de "Having" en "where".
Ne me souvenant plus ce que j'avais voulu faire à l'origine, il y a plusieurs années, je suis un peu déboussolé. Et comme je ne manipule pas SQL comme un professionnel ....
Pour être plus clair, j'avais:
"Select ... tatata ... Group by .... having (((ComptabiliteGestionEuros.Date) > Date - 750)) ORDER by ... tatata"

et maintenant j'ai:
"Select ... tatata ... where (((ComptabiliteGestionEuros.Date) > Date - 750))
Group by .... ORDER by ... tatata
"

Je remercie vivement tous ceux qui pourront m'enseigner la différence entre ces 2 écritures et ce qu'elles impliquent.
Bien cordialement, avec impatience.

2 réponses

Messages postés
23763
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
13 janvier 2020
3 123
Salut,

ta requête initiale possédait un HAVING qui fonctionnait comme un WHERE, c'est pour cela que la conversion a supprimé le HAVING.

Le HAVING sert à effectuer une restriction, non pas sur les données brutes (comme le WHERE) mais sur des données agrégées.

Ex :

SELECT AVG(age), classe FROM table GROUP BY Classe HAVING AVG(age) >20;

Cette requête va sortir la moyenne d'âge des classes seulement si cette moyenne est supérieure à 20. Ce calcul ne peut pas être fait avec un WHERE classique puisque AVG(age) n'est pas encore calculé quand on fait le WHERE.

A+ blux
 "Les cons, ça ose tout. 
C'est même à ça qu'on les reconnait"
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Bonsoir et grand-merci!
Tes explications sont très claires, .... comme d'habitude.