5.6 Ordre des lignes d’un résultat
113
© Dunod – La photocopie non autorisée est un délit.
Cependant, en consultant directement la table PRODUIT, on peut exprimer la consition de sélection de manière plus naturelle :
select NPRO
from
PRODUIT P
where (select sum(QCOM)
from DETAIL
where NPRO = P.NPRO
and NCOM in (select NCOM from COMMANDE
where DATECOM like '%2005')) > 500
Toujours dans les situations où le concept interrogé est aussi décrit par une table, on
peut éviter la structure du group by également lorsque des valeurs agrégées sont
demandées dans la clause select, comme on le verra dans la section 6.3.1.
5.6 ORDRE DES LIGNES D’UN RÉSULTAT
Par construction, l’ordre des lignes d’une table est arbitraire. On ne peut donc
supposer que les lignes sont stockées dans un ordre déterminé (celui de leur instant
de création par exemple). Si elles semblent l’être un jour, rien ne garantit qu’elles le
seront encore le lendemain. En principe, l’ordre des lignes du résultat d’une requête
est aussi arbitraire. Il est cependant possible d’imposer un ordre de présentation
spécifique par la clause order by.
Les lignes de la table résultant de la requête suivante vont apparaître classées (on
dira triées) par valeurs croissantes de LOCALITE.
select NCLI, NOM, LOCALITE
from
CLIENT
where CAT in ('C1','C2')
order by LOCALITE
On peut indiquer plusieurs critères de tri :
select *
from
CLIENT
order by LOCALITE, CAT
Les clients vont apparaître classés par localité, puis dans chaque localité, classés par
catégorie. Par défaut, le classement se fait par ordre ascendant des valeurs. On peut
également spécifier explicitement un ordre ascendant (asc) ou descendant (desc) :
select *
from
PRODUIT
where LIBELLE like '%SAPIN%'
order by QSTOCK desc
Le critère de tri est constitué d’une ou plusieurs expressions, apparaissant ou non
Dans la clause select. Si une expression apparaît dans la cause select, elle sera
spécifiée par son nom s’il s’agit d’une colonne, comme dans les exemples précé-
113
© Dunod – La photocopie non autorisée est un délit.
Cependant, en consultant directement la table PRODUIT, on peut exprimer la consition de sélection de manière plus naturelle :
select NPRO
from
PRODUIT P
where (select sum(QCOM)
from DETAIL
where NPRO = P.NPRO
and NCOM in (select NCOM from COMMANDE
where DATECOM like '%2005')) > 500
Toujours dans les situations où le concept interrogé est aussi décrit par une table, on
peut éviter la structure du group by également lorsque des valeurs agrégées sont
demandées dans la clause select, comme on le verra dans la section 6.3.1.
5.6 ORDRE DES LIGNES D’UN RÉSULTAT
Par construction, l’ordre des lignes d’une table est arbitraire. On ne peut donc
supposer que les lignes sont stockées dans un ordre déterminé (celui de leur instant
de création par exemple). Si elles semblent l’être un jour, rien ne garantit qu’elles le
seront encore le lendemain. En principe, l’ordre des lignes du résultat d’une requête
est aussi arbitraire. Il est cependant possible d’imposer un ordre de présentation
spécifique par la clause order by.
Les lignes de la table résultant de la requête suivante vont apparaître classées (on
dira triées) par valeurs croissantes de LOCALITE.
select NCLI, NOM, LOCALITE
from
CLIENT
where CAT in ('C1','C2')
order by LOCALITE
On peut indiquer plusieurs critères de tri :
select *
from
CLIENT
order by LOCALITE, CAT
Les clients vont apparaître classés par localité, puis dans chaque localité, classés par
catégorie. Par défaut, le classement se fait par ordre ascendant des valeurs. On peut
également spécifier explicitement un ordre ascendant (asc) ou descendant (desc) :
select *
from
PRODUIT
where LIBELLE like '%SAPIN%'
order by QSTOCK desc
Le critère de tri est constitué d’une ou plusieurs expressions, apparaissant ou non
Dans la clause select. Si une expression apparaît dans la cause select, elle sera
spécifiée par son nom s’il s’agit d’une colonne, comme dans les exemples précé-
