Having et Where dans SQL ???

Résolu
tessel75 -  
 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.

A voir également:

2 réponses

blux Messages postés 27170 Date d'inscription   Statut Modérateur Dernière intervention   3 362
 
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
tessel75
 
Bonsoir et grand-merci!
Tes explications sont très claires, .... comme d'habitude.
0