Having et Where dans SQL ???

Résolu/Fermé
tessel75 - Modifié par tessel75 le 3/04/2013 à 23:24
 tessel75 - 4 avril 2013 à 23:13
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 26008 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
Modifié par blux le 4/04/2013 à 11:39
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
Bonsoir et grand-merci!
Tes explications sont très claires, .... comme d'habitude.
0