Filtrage avec le constructeur de requête
Méthode : 1ère méthode
Pour accéder au Constructeur de requête :
Faire un clic droit sur le nom de la couche (active) dans le panneau Couches
Cliquer sur Filtrer

Méthode : 2ème méthode
Méthode : 3ème méthode
Menu Couche Filtrer
La boîte de dialogue Constructeur de requête se présente comme suit :


La boîte de dialogue Constructeur de requête est composée des zones suivantes :
1 : Nom de la table sur laquelle est effectuée la sélection attributaire
2 : Cadre Champs : contient tous les attributs de la couche. Pour ajouter un attribut à la clause WHERE (cadre expression), double-cliquer sur son nom dans la liste.
3 : Cadre Valeurs : liste tout ou partie des valeurs (attributs) du champ sélectionné dans le cadre Champs.
Pour lister la totalité des valeurs, cliquer sur le bouton [Tout]. Pour lister uniquement les 25 premières valeurs, cliquer sur [Échantillon].
Pour ajouter une valeur à la clause WHERE (cadre expression), double-cliquer dessus.
Attention : si la couche a déjà fait l'objet d'un filtrage au moyen du constructeur de requête, seules les valeurs résultant de cette sélection sont affichées et la sélection sera effectuée sur le sous-ensemble déjà sélectionné.
Pour obtenir la liste de toutes les valeurs du champ, cocher la case ‘Utiliser la couche non filtrée'.
4 Cadre Opérateurs Les opérateurs principaux utilisés dans les requêtes figurent sous forme de boutons à cliquer. Pour ajouter un opérateur à la requête SQL, cliquez sur le bouton correspondant.
5 Cadre expression (‘Expression de filtrage spécifique au fournisseur') Ce cadre contient l'expression littérale de la sélection. C'est la clause WHERE de la requête SQL .
Le bouton [Tester] affiche une fenêtre comptabilisant le nombre d'entités correspondant à la requête, permettant de savoir si la requête est correctement écrite.
Le bouton [Effacer] annule le texte de la requête.
Le bouton [OK] effectue la sélection en fonction de la recherche définie et ferme la boîte de dialogue Constructeur de requête. Si la requête a été effacée avant, la couche entière réapparaît.
Le bouton [Annuler] ferme la fenêtre, sans effectuer la requête
Remarque :
Il est aussi possible d'écrire directement l'expression de la sélection dans le cadre expression, mais l'utilisation des double-clics est plus ergonomique et évite les erreurs d'écriture, notamment pour les valeurs des attributs.
Exemple :
Dans la couche COMMUNE (BD_TOPO/H_ADMINISTRATIF) on souhaite sélectionner les communes du canton de MALICORNE-SUR-SARTHE.

A – Choix du champ
Après avoir ouvert la couche et l'avoir sélectionnée (surbrillance dans le panneau Couches), faire apparaître le constructeur de requête (clic droit sur la couche active → Filtrer ):
Double-cliquer sur le champ CANTON dans le cadre champs (1)
Le texte ‘'CANTON‘' apparaît dans le cadre expression (2) (QGIS a ajouté les doubles quotes autour de CANTON, c'est la syntaxe SQL):


B – Choix de l'opérateur
Choisir l'opérateur '=' en cliquant sur le bouton '=' (3)
L'opérateur '=' est ajouté à l'expression avec l'espace qui le sépare de « CANTON » (4) :

Le curseur de texte clignotant est en attente après l'opérateur '='

C – Choix de la valeur du champ
Pour écrire la valeur qui convient (MALICORNE-SUR-SARTHE) on a le choix entre taper directement la chaîne de caractères (fastidieux et source d'erreurs) ou bien la choisir dans un échantillon de valeurs affichées.
Pour afficher toutes les valeurs du champ CANTON, il suffit de sélectionner le champ CANTON (un seul clic sur CANTON dans le cadre Champs) puis de cliquer sur le bouton Tout dans le cadre Valeurs à droite (5).
Toutes les valeurs présentes dans le champ CANTON de la table d'attributs sont affichées dans le cadre Valeurs (6):


Un double -clic sur la valeur MALICORNE-SUR-SARTHE permet de l'écrire dans le cadre expression ("Expression de filtrage spécifique au fournisseur").
QGIS ajoute les simples quotes autour de la valeur (syntaxe SQL).
L'expression complète de la clause WHERE est :
"CANTON" = 'MALICORNE-SUR-SARTHE'


La requête complète en langage SQL est la suivante (c'est celle qui est exécutée par le logiciel) :
SELECT * FROM COMMUNE WHERE "CANTON" = 'MALICORNE-SUR-SARTHE'
En langage courant :
Sélectionner (SELECT)
tous les champs (*) (on prend toutes les colonnes de la table attributaire)
de la couche COMMUNE (FROM COMMUNE)
lorsque la valeur du champ CANTON est égale à MALICORNE-SUR-SARTHE (WHERE "CANTON" = 'MALICORNE-SUR-SARTHE')
La syntaxe peut paraître un peu lourde au début, mais avec un peu d'habitude, le langage SQL est praticable et il est très puissant !
Les notions fondamentales du langage SQL sont présentées dans le stage QGIS perfectionnement.
Un clic sur le bouton Tester donne le résultat suivant :

(dommage pour l'accord du participe passé, le français est souvent plus compliqué que le SQL !)

Après avoir cliqué sur OK pour effectuer la requête, seules les entités sélectionnées apparaissent dans la carte :

Il en est de même dans la table attributaire :

Remarque :
Attention :
Tant que la requête n'a pas été effacée, c'est le sous-ensemble contenant les entités sélectionnées qui est affiché.
Dans le panneau de couches un symbole de filtrage (voir ci-dessous) indique les couches filtrées.
L'info-bulle qui apparaît avec un petit temps d'arrêt de la souris sur le nom de la couche affiche une information qui indique le filtre :
Il ne faut pas hésiter à consulter le constructeur de requête ou l'onglet général des propriétés de la couche, pour visualiser l'expression de la requête .
Pour effacer la requête, il faut lancer à nouveau le constructeur de requête et cliquer sur le bouton « Effacer ».
Remarque :
Pour enregistrer le sous-ensemble sélectionné comme une nouvelle couche, faire un clic droit sur la couche et cliquer sur “Sauvegarder sous...”, et préciser le nom de la couche sauvegardée.
Rappel :
La sélection est sauvegardée en enregistrant le projet et le sous-ensemble sera affiché dans la fenêtre carte à la réouverture du projet.