HAVING clause (Microsoft Access SQL)
S’applique à : Access 2013 | Access 2016
Spécifie quels enregistrements regroupés sont affichés dans une instruction SELECT avec une clause GROUP BY. Une fois que GROUP BY a regroupé les enregistrements, la clause HAVING affiche les enregistrements qui satisfont à ses conditions.
Syntaxe
SELECT fieldlist FROM table WHERE selectcriteria GROUP BY groupfieldlist [HAVING groupcriteria ]
Une instruction SELECT contenant une clause HAVING est composée des arguments suivants :
Élément | Description |
---|---|
fieldlist | Nom du ou des champs à extraire avec des alias, des fonctions d’agrégation SQL, des prédicats de sélection (ALL, DISTINCT, DISTINCTROW ou TOP) ou des options d’instruction SELECT. |
table | Nom de la table de laquelle des enregistrements sont extraits. Pour plus d’informations, voir la clause FROM. |
selectcriteria | Critère de sélection. Si l’instruction comporte une clause WHERE, le moteur de base de données Microsoft Access regroupe les valeurs après avoir appliqué les conditions WHERE aux enregistrements. |
groupfieldlist | Noms des champs (10 maximum) utilisés pour regrouper les enregistrements. L'ordre des noms des champs dans listechampsgroupe détermine les niveaux de regroupement du plus haut au plus bas. |
groupcriteria | Expression qui détermine les enregistrements regroupés à afficher. |
Remarques
La clause HAVING est facultative.
HAVING est similaire à WHERE qui détermine quels enregistrements sont sélectionnés. Une fois que les enregistrements sont regroupés avec GROUP BY, HAVING détermine ceux à afficher :
SELECT CategoryID,
Sum(UnitsInStock)
FROM Products
GROUP BY CategoryID
HAVING Sum(UnitsInStock) > 100 And Like "BOS*";
Une clause HAVING peut contenir jusqu'à 40 expressions reliées par des opérateurs logiques, tels que And et Or.
Exemple
Dans cet exemple, les fonctions affectées à plusieurs employés dans la région de Washington sont sélectionnées. Il appelle la procédure EnumFields que vous pouvez trouver dans l’exemple d’instruction SELECT.
Sub HavingX()
Dim dbs As Database, rst As Recordset
' Modify this line to include the path to Northwind
' on your computer.
Set dbs = OpenDatabase("Northwind.mdb")
' Select the job titles assigned to more than one
' employee in the Washington region.
Set rst = dbs.OpenRecordset("SELECT Title, " _
& "Count(Title) as Total FROM Employees " _
& "WHERE Region = 'WA' " _
& "GROUP BY Title HAVING Count(Title) > 1;")
' Populate the Recordset.
rst.MoveLast
' Call EnumFields to print recordset contents.
EnumFields rst, 25
dbs.Close
End Sub
Voir aussi
- Forum Access pour les développeurs
- Aide Access sur support.office.com
- Forums Access sur UtterAccess
- Centre d'aide pour les développeurs Access et la programmation VBA (FMS)
- Billets sur Access sur StackOverflow
Assistance et commentaires
Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.