A voir également:
- Clauses SQL
- Logiciel sql - Télécharger - Bases de données
- Requete sql pix - Forum PHP
- Additions et multiplication dans des requêtes SQL ✓ - Forum MySQL
- Sql query download - Télécharger - Gestion de données
- Ora-00933: la commande sql ne se termine pas correctement ✓ - Forum Oracle
5 réponses
Salut
La clause HAVING est un filtre de regroupement. Elle ne s'utilise qu'en présence de GROUP BY et filtre normalement une fonction récapitulative
=> le WHERE va filtrer les lignes sur lesquelles se basera le regroupement
=> le HAVING va filtrer les lignes du résultat regroupé
comme les fonctionnalités sont distinctes, on peut les utiliser dans la même requête
La clause HAVING est un filtre de regroupement. Elle ne s'utilise qu'en présence de GROUP BY et filtre normalement une fonction récapitulative
=> le WHERE va filtrer les lignes sur lesquelles se basera le regroupement
=> le HAVING va filtrer les lignes du résultat regroupé
comme les fonctionnalités sont distinctes, on peut les utiliser dans la même requête
{ => le WHERE va filtrer les lignes sur lesquelles se basera le regroupement
=> le HAVING va filtrer les lignes du résultat regroupé }}
J'ai bien compris que le Where était un filtre,
à partir d'une valeur, il affiche toutes les lignes qui ont le critères du filtre en commun
Par contre je ne vois pas ce que Having fait de plus, peux tu stp illustrer par un exemple
Merci
=> le HAVING va filtrer les lignes du résultat regroupé }}
J'ai bien compris que le Where était un filtre,
à partir d'une valeur, il affiche toutes les lignes qui ont le critères du filtre en commun
Par contre je ne vois pas ce que Having fait de plus, peux tu stp illustrer par un exemple
Merci
Salut,
ne renverra pas la même chose que
car dans la 1ere requete, on ne cherche que les lignes de facture supérieures à $10000 alors que dans la seconde, on veut que le cumul soit supérieur à $10000
dans le 1er, on ne verra pas Acme qui nous achète de l'eau déshydratée pour $500 tous les jours alors que dans le second, Acme apparaitra car son CA mensuel sera à $15000
select idClient, to_char(dtEmission, 'mm'), sum(mtPU * nbQte) from client c, facture f, ligne_facture l where c.idClient = f.idClient and f.idFacture = l.idFacture and to_char(dtEmission, 'yyyy') = '2009' and (mtPU * nbQte) > 10000 group by idClient, to_char(dtEmission, 'mm')
ne renverra pas la même chose que
select idClient, to_char(dtEmission, 'mm'), sum(mtPU * nbQte) from client c, facture f, ligne_facture l where c.idClient = f.idClient and f.idFacture = l.idFacture and to_char(dtEmission, 'yyyy') = '2009' group by idClient, to_char(dtEmission, 'mm') having sum(mtPU * nbQte) > 10000
car dans la 1ere requete, on ne cherche que les lignes de facture supérieures à $10000 alors que dans la seconde, on veut que le cumul soit supérieur à $10000
dans le 1er, on ne verra pas Acme qui nous achète de l'eau déshydratée pour $500 tous les jours alors que dans le second, Acme apparaitra car son CA mensuel sera à $15000
En gros si j'ai bien compris la clause Where
est seulement pour Filtrer les champs,
et la clause Where c'est seulement pour filtrer les calcules de champs, ou un filtrage sur les fonctions de calcules :
Where champ1 + 3 > champ2
Having Sum(champ2 + 3) < Sum(champ1)
Merci de me confirmer
est seulement pour Filtrer les champs,
et la clause Where c'est seulement pour filtrer les calcules de champs, ou un filtrage sur les fonctions de calcules :
Where champ1 + 3 > champ2
Having Sum(champ2 + 3) < Sum(champ1)
Merci de me confirmer
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question