Académique Documents
Professionnel Documents
Culture Documents
5 Ordre et interprétation
3.2 Opérateurs ensemblistes 3.6 Modification des données
3.3 Structures cycliques 3.7 Modification des structures
3.4 Données groupées
DML Instructions
Data Manipulation Language (langage de manipulation
de données)
Sous-Requêtes
Les quantificateurs ensemblistes : exists, not exists
Sous-Requêtes
NCLI
B062
C123
L422
S127
Sous-Requêtes - Principes
B062
C123
L422
S127
B062
C123
L422
S127
mieux :
select *
from PRODUIT
where NPRO in
(select NPRO
from DETAIL
where NCOM in
(select NCOM
from COMMANDE
where NCLI in
(select NCLI
from CLIENT
where LOCALITE='Namur')));
Les sous-requêtes - Principes
select *
from PRODUIT
where NPRO in
(select NPRO
from DETAIL
where NCOM in
(select NCOM
from COMMANDE
where NCLI in
(select NCLI
from CLIENT
where LOCALITE='Namur')));
les produits référencés par les détails des commandes des clients de Namur
Sous-requêtes - Condition d'association
select *
from T
where CT in (select CS
from S
where <condition>);
select *
from COMMANDE
where NCLI in (select NCLI
from CLIENT
where LOCALITE = 'Namur');
select *
from CLIENT
where NCLI in (select NCLI
from COMMANDE
where DATECOM = '21-12-2020');
from COMMANDE
where NCOM in (select NCOM
from DETAIL
where NPRO <> 'PA60');
Les quantificateurs ensemblistes
Quantificateurs ensemblistes - exists, not exists
select *
from CLIENT
where NCLI in (select NCLI
from COMMANDE
where DATECOM = '12-09-2020');
select *
from CLIENT C
where exists (select *
from COMMANDE M
where M.NCLI = C.NCLI
and DATECOM = '12-09-2020');
SQL DML LANGUAGE (2)
Contenu
Création de tables
Opérateurs ensemblistes
UNION, INTERSECT and EXCEPT
union ()
Pas de problèmes pour deux ensembles.
intersection ()
Mais qu'en est-il pour deux tables ?
différence (-)
3.2 Opérations ensemblistes - Les ensembles
(select NOM
from T1
except NOM
select NOM
from T2) GILLET
union PONCELET
JACOB
(select NOM MONTI
from T2
except
select NOM
from T1)
SOUS REQUÊTE OU JOINTURE
Sous-Requêtes ou Jointure ?
select NCOM,DATECOM
from COMMANDE
where NCLI in (select NCLI
from CLIENT
where LOCALITE = 'Poitiers');
=
select NCOM,DATECOM
from COMMANDE, CLIENT
where COMMANDE.NCLI = CLIENT.NCLI
and LOCALITE = 'Poitiers';
Sous-Requêtes ou Jointure ?
Mais ...
select distinct COMMANDE.NCOM, DATECOM, NCLI
from COMMANDE, DETAIL
where COMMANDE.NCOM = DETAIL.NCOM
and NPRO <> 'PA60';
select distinct COMMANDE.NCOM, DATECOM, NCLI
from COMMANDE, DETAIL
where COMMANDE.NCOM <> DETAIL.NCOM
and NPRO = 'PA60';
Sous-Requêtes ou Jointure ?