Comment limiter les résultats des requêtes pour les bases de données DB2 ?
Il existe deux façons de limiter le résultat.
- LIMIT / OFFSET
- FETCH FIRST
Pourquoi avons-nous besoin de limiter les résultats de la requête ?
Supposons que vous écriviez une application qui nécessite des informations uniquement sur les 10 étudiants ayant obtenu les notes totales les plus élevées. Pour renvoyer uniquement les lignes de la table Students pour ces 20 étudiants, cela peut être réalisé par la clause FETCH FIRST ou LIMIT.
De plus, cette clause est utile sur les grandes tables avec des milliers d’enregistrements. Le renvoi d’un grand nombre d’enregistrements peut avoir un impact sur les performances.
Clause d’extraction DB2 :
La clause Fetch permet de limiter le nombre de lignes renvoyées par la requête.
Syntaxe:
SELECT select_list FROM nom_table
OFFSET n ROWS
FETCH {FIRST | NEXT } m {ROW | ROWS} ONLY
Où,
- ‘n’ est le nombre de lignes à ignorer.
- ‘m’ est le nombre de lignes à retourner. FIRST et NEXT, ROW et ROWS sont respectivement interchangeables. Ils sont utilisés à des fins sémantiques.
Base de données DB2 :
Vous trouverez ci-dessous une sélection de la table “Produit” de la base de données DB2.
ID-Produit | Nom-Produit | Categorie | Prix | Stock | Valeur-Totale |
---|---|---|---|---|---|
7001 | Souris | Accessoires | 75,00 | ||
7002 | Disque dur | 65,00 | 20 | 1 300 | |
7003 | Clavier | Accessoires | 36.00 | 33 | 1 118,00 |
7004 | RAM | Composants | 23.50 | 16 | 376,00 |
7005 | VTT | vélos | 1 200 | ||
7006 | STYLO | 7.45 | 10 | 74,50 | |
7007 | Lecteur CD | Accessoires | 75,00 | ||
7008 | Micro | Accessoires | 75,00 |
Exemple 1:
La requête SQL suivante utilise la clause FETCH pour obtenir les 4 premiers produits de la table “Produits”.
SELECT *
FROM Produit
FETCH FIRST 4 ROWS ONLY;
Résultat:
ID-Produit | Nom-Produit | Categorie | Prix | Stock | Valeur-Totale |
---|---|---|---|---|---|
7001 | Souris | Accessoires | 75,00 | ||
7002 | Disque dur | 65,00 | 20 | 1 300 | |
7003 | Clavier | Accessoires | 36.00 | 33 | 1 118,00 |
7004 | RAM | Composants | 23.50 | 16 | 376,00 |
Exemple 2 :
Pour ignorer les 2 premiers produits et retourner les 3 produits suivants, nous utilisons la clause FETCH OFFSET comme suit :
SELECT *
FROM Produit
OFFSET 2 ROWS
FETCH NEXT 3 ROWS ONLY;
Résultat:
ID-Produit | Nom-Produit | Categorie | Prix | Stock | Valeur-Totale |
---|---|---|---|---|---|
7003 | Clavier | Accessoires | 36.00 | 33 | 1 118,00 |
7004 | RAM | Composants | 23.50 | 16 | 376,00 |
7005 | VTT | vélos | 1 200 |