Vous êtes sur la page 1sur 4

create database revision_serie4;

use revision_serie4;
create table produitFini(
codeProFini varchar(100) ,
NomPro varchar(100),
QteEnStock int ,
PRIMARY KEY (codeProFini)
);

create table Mouvement(


NumMvm int Primary key auto_increment,
TypeMvm varchar(100),
Qnantite int ,
codeProFini varchar(200),
Foreign key (codeProFini) references produitFini(codeProFini)
);
create table Fournisseur (
NumFour int ,
RsFour varchar (300),
AdrFour varchar (300),
NbrProduitFournis int ,
PRIMARY KEY (NumFour)
);

insert into produitfini values('Prdfini1','IPhone


14',2000),('Prdfini2','TV Sumsung 4K',1500),('Prdfini3','Hwawei
watch fit',1000);
insert into Mouvement(TypeMvm,Qnantite,codeProFini)
values('Mvm1',20,'Prdfini1'),('Mvm2',68,'Prdfini3'),('Mvm3',10,'Prdf
ini2');
insert into fournisseur Values(1,'res1','1 Lot Anass hay
azzohor',40),(2,'res2','hay annakhil',128),(3,'res3','bensouda',38);
insert into produitbrut values('PrdBrut1','Galaxy S22
ultra',4500,3),('PrdBrut2','Ps4 1To',5000,1),('PrdBrut3','Ps5
2To',9700,2);
insert into composition
values('Prdfini2','PrdBrut3',4),('Prdfini1','PrdBrut3',5),('Prdfini3
','PrdBrut1',10),('Prdfini1','PrdBrut2',40);

-- 1
Delimiter $$
Create procedure PS1()
Begin
create table produitBrut(
CodeProBrut varchar(100),
NomProBrut varchar(100),
PrixAchat float ,
NumFour int,
PRIMARY KEY (CodeProBrut),
Foreign key(NumFour) references Fournisseur(NumFour)
);
create table Composition (
codeProFini varchar(100) ,
CodeProBrut varchar(100) ,
PRIMARY KEY (codeProFini,CodeProBrut),
Foreign key (codeProFini) references
produitFini(codeProFini),
Foreign key (CodeProBrut) references
produitBrut(CodeProBrut),
Quantiteutilise int
);
End $$
DELIMITER ;
call PS1();

-- PS2
delimiter $$
create procedure PS2()
begin
SELECT codeProFini,count(CodeProBrut) from composition group by
codeProFini ;
end $$
delimiter $$;
call PS2();

-- PS3
delimiter $$
create function PS3() returns float
reads sql data
begin
return (select Max(PrixAchat) from produitbrut);
end $$
delimiter ;
select PS3() as Max_Prix_Achat

-- 4

delimiter $$
create procedure PS4()
begin
select p.codeProFini,NomPro,QteEnStock from produitfini p join
composition c
on c.codeProFini=p.codeProFini group by
p.codeProFini,NomPro,QteEnStock having (count(p.codeProFini) >=2 ) ;
end $$
delimiter ;
call PS4();

-- 5
delimiter $$
create function PS5(nomPb varchar(100) ) returns varchar(300)
reads sql data
begin
return (select RsFour from fournisseur f join produitbrut pb on
f.NumFour = pb.NumFour where pb.NomProBrut = nomPb );
End $$
delimiter ;
drop function PS5;
select PS5('Ps4 1To')

-- 6
delimiter $$
create procedure PS6(in codePf varchar(100))
begin
select M.* from mouvement M where M.codeProFini = codePf ;
end $$
delimiter ;
call PS6('Prdfini2');

-- 7
delimiter $$
create procedure PS7(in CodePf varchar(200) , in typeMvm
varchar(200))
begin
select M.* from mouvement M where M.codeProFini=CodePf And
M.TypeMvm=typeMvm ;
end $$
delimiter ;
call PS7('Prdfini1','Mvm1')

-- 8
delimiter $$
create Procedure PS8()
begin
declare C varchar(100);
declare QteStock int ;
declare err boolean Default false ;
declare c1 cursor for SELECT codeProFini,QteEnStock from
produitfini ;
declare exit handler for not found set err = true ;
open c1 ;
while err = false do
fetch c1 into C , QteStock ;
select C,QteStock;
select M.* from mouvement M where codeProFini = C ;
end while;
end $$
delimiter ;
call PS8() ;

-- 9
delimiter $$
create function PS9(codepf varchar(40))returns float
reads sql data
begin
return (select SUM(p.PrixAchat * c.Quantiteutilise) from
produitbrut p ,composition c where p.CodeProBrut=c.CodeProBrut and
p.CodeProBrut=codepf);
end $$
delimiter ;
select PS9('PrdBrut1')

Vous aimerez peut-être aussi