Advertisement
bebesurf

Réponses TP4 Intro BD

Dec 10th, 2017
366
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 2.30 KB | None | 0 0
  1. /* 1 Liste des noms de services avec le nom du chef de services et le nombre d’employés affectés
  2. au service */
  3.  
  4. SELECT nomserv, e1.nuempl, count(*)
  5. FROM BASETD.SERVICE, BASETD.EMPLOYE e1, BASETD.EMPLOYE e2
  6. WHERE Service.chef = e1.nuempl AND BASETD.SERVICE.nuserv = e2.affect
  7. GROUP BY nomserv, e1.nuempl;
  8.  
  9. /* 2 Liste des noms de projets avec le nom du responsable et le nombre d’employés qui y tra-
  10. vaillent */
  11.  
  12. SELECT nomproj, e1.nomempl, count(*)
  13. FROM BASETD.PROJET, BASETD.EMPLOYE e1, BASETD.TRAVAIL
  14. WHERE PROJET.resp = e1.nuempl AND TRAVAIL.nuproj = BASETD.PROJET.NUPROJ
  15. GROUP BY nomempl, nomproj;
  16.  
  17. /* 3 Liste des noms de projets avec la totalisation du nombre d’heures passées par les employés
  18. qui y travaillent */
  19.  
  20. SELECT nomproj, SUM(duree)
  21. FROM BASETD.PROJET, BASETD.TRAVAIL
  22. WHERE PROJET.nuproj = TRAVAIL.nuproj
  23. GROUP BY nomproj;
  24.  
  25. /* 4 Liste des noms de projets avec pour chaque service concerné, le nom du service et le nombre
  26. d’employés de ce service qui travaillent sur ce projet */
  27.  
  28. SELECT nomproj, nomserv, count(*)
  29. FROM BASETD.SERVICE, BASETD.PROJET, BASETD.CONCERNE, BASETD.EMPLOYE
  30. WHERE PROJET.nuproj = CONCERNE.nuproj AND CONCERNE.nuserv = SERVICE.nuserv AND EMPLOYE.affect = SERVICE.nuserv
  31. GROUP BY nomproj, nomserv
  32. ORDER BY nomproj ASC;
  33.  
  34. /* 5 Liste des employés qui travaillent sur tous les projets */
  35.  
  36. SELECT nomempl
  37. FROM BASETD.EMPLOYE
  38. WHERE NOT EXISTS(SELECT * FROM BASETD.PROJET WHERE NOT EXISTS
  39. (SELECT * FROM BASETD.TRAVAIL where TRAVAIL.nuempl = EMPLOYE.nuempl AND TRAVAIL.nuproj = PROJET.nuproj));
  40.  
  41. /* 6 Pour le service Achat, trouvez le nom du chef de service et le nombre d’employés qui y sont
  42. affectés */
  43.  
  44. SELECT e1.nomempl, count(*)
  45. FROM BASETD.EMPLOYE e1, BASETD.EMPLOYE e2, BASETD.SERVICE
  46. WHERE SERVICE.nuserv = 1 AND SERVICE.chef = e1.nuempl AND e2.affect = SERVICE.nuserv
  47. GROUP BY e1.nomempl;
  48.  
  49. /* 7 Liste des employés qui travaillent sur au moins un des projets sur lesquels ’sophie’ travaille. */
  50.  
  51. SELECT nomempl
  52. FROM BASETD.EMPLOYE
  53. WHERE EXISTS (
  54.     SELECT *
  55.     FROM BASETD.TRAVAIL
  56.     WHERE EMPLOYE.nuempl = TRAVAIL.nuempl AND nuproj in(
  57.         SELECT nuproj
  58.         FROM BASETD.TRAVAIL
  59.         WHERE nuempl = (
  60.             SELECT nuempl
  61.             FROM BASETD.EMPLOYE
  62.             WHERE nomempl = 'sophie'))) AND nomempl != 'sophie';
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement