Advertisement
kajs54

SQ.

Dec 9th, 2024
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 3.06 KB | None | 0 0
  1. create view v_chef as
  2. select *  from Employe where NumE in (select NumChef from Employe );
  3.  
  4. -- 2 ---
  5. create view v_missions_en_cours as
  6. select
  7.     m.NumM,
  8.     m.NumE,
  9.     m.DateDebut,
  10.     m.DateFin,
  11.     e.Nom AS NomEmploye,
  12.     e.Fonction,
  13.     d.Nom AS NomDepartement
  14. from Mission m
  15. join Employe e ON m.NumE = e.NumE
  16. join Departement d ON e.NumDep = d.NumDep
  17. where DateFin is NULL;
  18.  
  19.  -- 3 --
  20. insert into Mission (NumM, NumE, DateDebut, DateFin, Ville)
  21. values (123, 101, '2024-12-01', NULL, 'Paris'); -- It will also appear in the v_missions_en_cours --
  22.  
  23.  
  24. -- 4--
  25.  
  26. alter table  Mission drop column Ville;  
  27. -- La vue v_mission_en_cours depend de la colonne ville du tableau Mission, elle deviendra invalide--
  28.  
  29.  
  30.  
  31. -- Partie 2--
  32.  
  33. -- 1 --
  34.  
  35. delimiter //
  36.  
  37. create procedure  afficher_salaire_totale()
  38. begin
  39.  declare somme_salaire int;
  40.  select sum(Salaire) into somme_salaire from Employe;
  41.  if somme_salaire is NULL then
  42.     select "Salaire null";
  43. else
  44.     select concat("Salaire totale des employés est : ", somme_salaire) as Salaire_Totale;
  45. end if;
  46. end;
  47. //
  48. delimiter ;
  49. call afficher_salaire_totale();
  50.  
  51.  
  52. -- 2 --
  53. delimiter $$
  54.  
  55. create procedure afficher_employes_par_departement(ID_dep int)
  56. begin
  57. select  NumE,Nom,Fonction,NumChef,Salaire,Commission from Employe where NumDep=ID_dep;
  58. end;
  59. $$
  60.  
  61. delimiter ;
  62.  
  63. call afficher_employes_par_departement(10);
  64.  
  65. -- 3 --
  66.  
  67.  
  68. delimiter ££
  69. create procedure ajouter_mission(p_num_mission int, p_num_employe int , p_date_debut date, p_date_fin date,p_ville varchar(20))
  70.  
  71. begin
  72.  
  73. if not  (p_num_employe in (select numE from employe)) THEN
  74.         select Concat("L'employé numero ", p_num_employee," n'existe pas ") as Message;
  75.     else
  76.         insert into Mission (NumM, NumE, DateDebut, DateFin, Ville)values
  77.         (p_num_mission, p_num_employe, p_date_debut, p_date_fin, p_ville);
  78.         SELECT CONCAT('La mission ', p_num_mission, ' a été ajoutée avec succès.') AS Message;
  79.     END IF;
  80. end
  81.  
  82. ££
  83. delimiter ;
  84.  
  85.  
  86.  
  87.  
  88. -- FONCTION STOCKEE --
  89.  
  90. -- 1 --
  91. delimiter $$
  92.  
  93. create function get_total_comission()
  94. returns  int  not deterministic
  95. begin
  96. declare total_comission int;
  97. select sum(ifnull(Comission,0)) into total_comission from employe;
  98. return total_comission;
  99. end;
  100. $$
  101.  
  102. delimiter ;
  103. call get_total_comission()
  104.  
  105.  
  106. -- 2 --
  107.  
  108. delimiter //
  109.  
  110. create function get_salaire_moyen_par_departement(p_num_dep int)
  111. returns int not DETERMINISTIC
  112. begin
  113.     declare x float;
  114.  
  115.     select sum(Salaire)/count(Salaire) into salaire_moyen from Employe where NumDep = p_num_dep;
  116.     return salaire_moyen;
  117. end
  118. //
  119. delimiter ;
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126. -- TRIGGERS --
  127.  
  128. -- 1 --
  129.  
  130.  
  131. delimiter //
  132.  
  133. create trigger modifier_date_modif before update on employe
  134. for each row
  135. begin
  136.      set new.derniere_modification=now();
  137. end;
  138. //
  139.  
  140. delimiter ;
  141.  
  142.  
  143.  
  144. -- 2 --
  145.  
  146. delimiter //
  147.  
  148. create trigger le_manager_est_le_plus_riche before  update on Employe
  149. for each row
  150. begin
  151.  if  (new.fonction <> "Manager" or new.fonction <> "PDG") and (new.salaire>5000) then
  152.     select "Impossible" as message;
  153. end if;
  154. end;
  155. //
  156. delimiter ;
  157.  
  158.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement