TP3
This commit is contained in:
parent
f3a325dd19
commit
efbd70b840
193
Code/CorrectionsTP/TP3b.sql
Normal file
193
Code/CorrectionsTP/TP3b.sql
Normal file
@ -0,0 +1,193 @@
|
|||||||
|
create table Buveur (
|
||||||
|
NumBuveur number primary key,
|
||||||
|
Nom Varchar2(25),
|
||||||
|
Prenom Varchar2(25),
|
||||||
|
Ville Varchar2(30));
|
||||||
|
|
||||||
|
|
||||||
|
Create table Viticulteur (
|
||||||
|
NumVitic Number Primary key,
|
||||||
|
Nom Varchar2(25) not null,
|
||||||
|
Prenom Varchar2(25),
|
||||||
|
Ville Varchar2 (30) not null );
|
||||||
|
|
||||||
|
Create table Vin (
|
||||||
|
NumVin Number,
|
||||||
|
Cru Varchar2(15) not null,
|
||||||
|
Millesime Number not null,
|
||||||
|
Region Varchar2(15) not null,
|
||||||
|
NumVitic Number not null references Viticulteur,
|
||||||
|
Primary key (NumVin));
|
||||||
|
|
||||||
|
Create table Commande (
|
||||||
|
NumCom Number Primary key,
|
||||||
|
NumBuveur Number not null references Buveur,
|
||||||
|
NumVin Number not null references Vin,
|
||||||
|
Qtte Number not null);
|
||||||
|
|
||||||
|
-- on rajoute une colonne à la table commande (nom de l'attribut datecom, type date)
|
||||||
|
alter table commande add datecom date;
|
||||||
|
|
||||||
|
Create table Livraison (
|
||||||
|
NumCom Number not null references Commande,
|
||||||
|
Qtte Number not null,
|
||||||
|
DateLiv Date not null,
|
||||||
|
Primary key (NumCom, DateLiv));
|
||||||
|
|
||||||
|
Insert into BUVEUR (NUMBUVEUR,NOM,PRENOM,VILLE) values ('1400','GAUTHIER','ROBERT','PARIS');
|
||||||
|
Insert into BUVEUR (NUMBUVEUR,NOM,PRENOM,VILLE) values ('1500','FRADET','PHILIPPE','MACON');
|
||||||
|
Insert into BUVEUR (NUMBUVEUR,NOM,PRENOM,VILLE) values ('1300','JAMET','FLORENCE','VERSAILLES');
|
||||||
|
Insert into BUVEUR (NUMBUVEUR,NOM,PRENOM,VILLE) values ('1100','COMBET','ALINE','DIJON');
|
||||||
|
Insert into BUVEUR (NUMBUVEUR,NOM,PRENOM,VILLE) values ('1600','DUPOND','ALAIN','PARIS');
|
||||||
|
Insert into BUVEUR (NUMBUVEUR,NOM,PRENOM,VILLE) values ('1700','COMBES','EDOUARD','PARIS');
|
||||||
|
Insert into BUVEUR (NUMBUVEUR,NOM,PRENOM,VILLE) values ('1350','GRAVINEL','SOPHIE','NICE');
|
||||||
|
Insert into BUVEUR (NUMBUVEUR,NOM,PRENOM,VILLE) values ('1450','PASCAL','YVES','MACON');
|
||||||
|
Insert into BUVEUR (NUMBUVEUR,NOM,PRENOM,VILLE) values ('1750','DURIEUX','BLAISE','CHINON');
|
||||||
|
Insert into BUVEUR (NUMBUVEUR,NOM,PRENOM,VILLE) values ('1200','MAURY','FRANCOIS','PARIS');
|
||||||
|
|
||||||
|
Insert into VITICULTEUR (NUMVITIC,NOM,PRENOM,VILLE) values ('1','MOULIN','JEAN','MACON');
|
||||||
|
Insert into VITICULTEUR (NUMVITIC,NOM,PRENOM,VILLE) values ('3','MORIN','JULES','BENAIS');
|
||||||
|
Insert into VITICULTEUR (NUMVITIC,NOM,PRENOM,VILLE) values ('5','COULIS DUTHEIL',null,'CHINON');
|
||||||
|
Insert into VITICULTEUR (NUMVITIC,NOM,PRENOM,VILLE) values ('4','VALLEE','CLAUDE','SAINT NICOLAS');
|
||||||
|
Insert into VITICULTEUR (NUMVITIC,NOM,PRENOM,VILLE) values ('10','PARENT','PIERRE','POMMARD');
|
||||||
|
Insert into VITICULTEUR (NUMVITIC,NOM,PRENOM,VILLE) values ('15','BARANCOURT',null,'TOURS SUR MARNE');
|
||||||
|
Insert into VITICULTEUR (NUMVITIC,NOM,PRENOM,VILLE) values ('16','JADOT','LOUIS','BEAUNE');
|
||||||
|
Insert into VITICULTEUR (NUMVITIC,NOM,PRENOM,VILLE) values ('18','MEDEVILLE','CHARLES','PREIGNAC');
|
||||||
|
Insert into VITICULTEUR (NUMVITIC,NOM,PRENOM,VILLE) values ('21','LYNCH-BAGES',null,'PAUILLAC');
|
||||||
|
Insert into VITICULTEUR (NUMVITIC,NOM,PRENOM,VILLE) values ('22','CHATEAU MONBRISON',null,'MARGAUX');
|
||||||
|
Insert into VITICULTEUR (NUMVITIC,NOM,PRENOM,VILLE) values ('23','CHATEAU MOULIN A VENT',null,'CASTELNAU DE MEDOC');
|
||||||
|
Insert into VITICULTEUR (NUMVITIC,NOM,PRENOM,VILLE) values ('20','TISSOT','JACQUES','ARBOIS');
|
||||||
|
|
||||||
|
Insert into VIN (NUMVIN,CRU,MILLESIME,REGION,NUMVITIC) values ('160','BOURGUEIL','1984','LOIRE','3');
|
||||||
|
Insert into VIN (NUMVIN,CRU,MILLESIME,REGION,NUMVITIC) values ('88','CHAMBERTIN','1980','BOURGOGNE','1');
|
||||||
|
Insert into VIN (NUMVIN,CRU,MILLESIME,REGION,NUMVITIC) values ('170','BOUZY','1984','CHAMPAGNE','15');
|
||||||
|
Insert into VIN (NUMVIN,CRU,MILLESIME,REGION,NUMVITIC) values ('175','MEURSAULT','1980','BOURGOGNE','16');
|
||||||
|
Insert into VIN (NUMVIN,CRU,MILLESIME,REGION,NUMVITIC) values ('80','SAUTERNES','1982','BORDEAUX','18');
|
||||||
|
Insert into VIN (NUMVIN,CRU,MILLESIME,REGION,NUMVITIC) values ('84','PAUILLAC','1982','BORDEAUX','21');
|
||||||
|
Insert into VIN (NUMVIN,CRU,MILLESIME,REGION,NUMVITIC) values ('90','MARGAUX','1978','BORDEAUX','22');
|
||||||
|
Insert into VIN (NUMVIN,CRU,MILLESIME,REGION,NUMVITIC) values ('98','MOULIS','1981','BORDEAUX','23');
|
||||||
|
Insert into VIN (NUMVIN,CRU,MILLESIME,REGION,NUMVITIC) values ('86','CHINON','1978','LOIRE','4');
|
||||||
|
Insert into VIN (NUMVIN,CRU,MILLESIME,REGION,NUMVITIC) values ('85','CHINON','1983','LOIRE','5');
|
||||||
|
Insert into VIN (NUMVIN,CRU,MILLESIME,REGION,NUMVITIC) values ('120','CHINON','1985','LOIRE','4');
|
||||||
|
Insert into VIN (NUMVIN,CRU,MILLESIME,REGION,NUMVITIC) values ('190','SAINT EMILION','1981','BORDEAUX','18');
|
||||||
|
Insert into VIN (NUMVIN,CRU,MILLESIME,REGION,NUMVITIC) values ('128','BOURGUEIL','1985','LOIRE','4');
|
||||||
|
Insert into VIN (NUMVIN,CRU,MILLESIME,REGION,NUMVITIC) values ('140','POMMARD','1976','BOURGOGNE','10');
|
||||||
|
Insert into VIN (NUMVIN,CRU,MILLESIME,REGION,NUMVITIC) values ('150','MONTHELIE','1978','BOURGOGNE','10');
|
||||||
|
Insert into VIN (NUMVIN,CRU,MILLESIME,REGION,NUMVITIC) values ('100','CHAMPAGNE BRUT','1988','CHAMPAGNE','15');
|
||||||
|
|
||||||
|
Insert into COMMANDE (NUMCOM,NUMBUVEUR,NUMVIN,QTTE,DATECOM) values ('8','1400','140','12',to_date('10/01/88','DD/MM/RR'));
|
||||||
|
Insert into COMMANDE (NUMCOM,NUMBUVEUR,NUMVIN,QTTE,DATECOM) values ('3','1500','88','24',to_date('10/09/87','DD/MM/RR'));
|
||||||
|
Insert into COMMANDE (NUMCOM,NUMBUVEUR,NUMVIN,QTTE,DATECOM) values ('2','1500','100','18',to_date('20/11/87','DD/MM/RR'));
|
||||||
|
Insert into COMMANDE (NUMCOM,NUMBUVEUR,NUMVIN,QTTE,DATECOM) values ('4','1600','175','6',to_date('12/02/87','DD/MM/RR'));
|
||||||
|
Insert into COMMANDE (NUMCOM,NUMBUVEUR,NUMVIN,QTTE,DATECOM) values ('5','1300','140','3',to_date('18/03/87','DD/MM/RR'));
|
||||||
|
Insert into COMMANDE (NUMCOM,NUMBUVEUR,NUMVIN,QTTE,DATECOM) values ('1','1600','90','6',to_date('10/06/87','DD/MM/RR'));
|
||||||
|
Insert into COMMANDE (NUMCOM,NUMBUVEUR,NUMVIN,QTTE,DATECOM) values ('6','1100','140','8',to_date('24/12/87','DD/MM/RR'));
|
||||||
|
Insert into COMMANDE (NUMCOM,NUMBUVEUR,NUMVIN,QTTE,DATECOM) values ('7','1200','88','3',to_date('24/12/87','DD/MM/RR'));
|
||||||
|
Insert into COMMANDE (NUMCOM,NUMBUVEUR,NUMVIN,QTTE,DATECOM) values ('11','1200','140','12',to_date('12/12/89','DD/MM/RR'));
|
||||||
|
Insert into COMMANDE (NUMCOM,NUMBUVEUR,NUMVIN,QTTE,DATECOM) values ('12','1100','120','6',to_date('13/12/89','DD/MM/RR'));
|
||||||
|
Insert into COMMANDE (NUMCOM,NUMBUVEUR,NUMVIN,QTTE,DATECOM) values ('10','1500','100','18',to_date('25/03/20','DD/MM/RR'));
|
||||||
|
|
||||||
|
|
||||||
|
insert into livraison (dateliv, qtte, numcom) values
|
||||||
|
(to_date('30/08/87', 'DD/MM/RR'), '12', '2');
|
||||||
|
insert into livraison (dateliv, qtte, numcom) values
|
||||||
|
(to_date('15/07/87', 'DD/MM/RR'), '6', '1');
|
||||||
|
insert into livraison (dateliv, qtte, numcom) values
|
||||||
|
(to_date('27/09/87', 'DD/MM/RR'), '6', '2');
|
||||||
|
insert into livraison (dateliv, qtte, numcom) values
|
||||||
|
(to_date('20/11/87', 'DD/MM/RR'), '12', '3');
|
||||||
|
insert into livraison (dateliv, qtte, numcom) values
|
||||||
|
(to_date('20/12/87', 'DD/MM/RR'), '6', '4');
|
||||||
|
insert into livraison (dateliv, qtte, numcom) values
|
||||||
|
(to_date('28/12/87', 'DD/MM/RR'), '8', '6');
|
||||||
|
insert into livraison (dateliv, qtte, numcom) values
|
||||||
|
(to_date('30/12/87', 'DD/MM/RR'), '3', '7');
|
||||||
|
|
||||||
|
-- Q1
|
||||||
|
-- sql 89
|
||||||
|
select distinct Nom, prenom, c.numbuveur
|
||||||
|
from Buveur b, commande c
|
||||||
|
where c.numbuveur = b.numbuveur
|
||||||
|
order by c.numbuveur;
|
||||||
|
|
||||||
|
-- SQL 92
|
||||||
|
select distinct Nom, prenom, numbuveur
|
||||||
|
from Buveur natural join commande
|
||||||
|
order by numbuveur;
|
||||||
|
|
||||||
|
-- Q2
|
||||||
|
-- sql89
|
||||||
|
select v.numvitic, nom, ville
|
||||||
|
from viticulteur vi, vin v
|
||||||
|
where vi.numvitic = v.numvitic and
|
||||||
|
v.region = 'LOIRE' and v.millesime = '1983';
|
||||||
|
|
||||||
|
-- SQL92
|
||||||
|
select numvitic, nom, ville
|
||||||
|
from viticulteur natural join vin v
|
||||||
|
where v.region = 'LOIRE' and v.millesime = '1983';
|
||||||
|
|
||||||
|
-- Q3
|
||||||
|
-- SQL89
|
||||||
|
-- SQL 89
|
||||||
|
select distinct B.numbuveur, nom
|
||||||
|
from buveur b, commande c, vin v
|
||||||
|
where b.numbuveur = c.numbuveur and c.numvin=v.numvin and cru = 'POMMARD' ;
|
||||||
|
|
||||||
|
-- SQL92
|
||||||
|
select distinct numbuveur, nom
|
||||||
|
from buveur natural join commande natural join vin
|
||||||
|
where cru = 'POMMARD' ;
|
||||||
|
|
||||||
|
|
||||||
|
-- Q4
|
||||||
|
-- SQL 92
|
||||||
|
select distinct nom
|
||||||
|
from commande natural join vin natural join viticulteur
|
||||||
|
where numbuveur = 1600;
|
||||||
|
|
||||||
|
select distinct nom
|
||||||
|
from viticulteur
|
||||||
|
where numvitic in (select numvitic
|
||||||
|
from vin
|
||||||
|
where numvin in (select numvin
|
||||||
|
from commande
|
||||||
|
where numbuveur = 1600));
|
||||||
|
|
||||||
|
select distinct t.nom
|
||||||
|
from (buveur b natural join commande natural join vin)
|
||||||
|
join viticulteur t using (numVitic)
|
||||||
|
where b.nom = 'DUPOND';
|
||||||
|
|
||||||
|
select distinct numvitic, t.nom , ville
|
||||||
|
from (buveur natural join commande natural join vin)
|
||||||
|
join viticulteur t using(numvitic, ville);
|
||||||
|
|
||||||
|
|
||||||
|
select distinct numvitic, nom , ville
|
||||||
|
from viticulteur t
|
||||||
|
where numvitic in (select numvitic
|
||||||
|
from vin
|
||||||
|
where numvin in (select numvin
|
||||||
|
from commande
|
||||||
|
where numbuveur in (select numbuveur
|
||||||
|
from buveur
|
||||||
|
where ville = t.ville)));
|
||||||
|
|
||||||
|
|
||||||
|
select *
|
||||||
|
from buveur
|
||||||
|
where ville in (select ville
|
||||||
|
from buveur
|
||||||
|
where numbuveur = 1400);
|
||||||
|
|
||||||
|
select qtte
|
||||||
|
from commande
|
||||||
|
where numcom = 11 and numvin = 140;
|
||||||
|
|
||||||
|
|
||||||
|
select *
|
||||||
|
from commande
|
||||||
|
where numvin = 140 and qtte < Any (select qtte
|
||||||
|
from commande
|
||||||
|
where numcom = 11 and numvin = 140);
|
Loading…
Reference in New Issue
Block a user