Guest User

Untitled

a guest
Oct 9th, 2016
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 57.50 KB | None | 0 0
  1. /*
  2. -- =========================================================================== A
  3. Activité : IFT187
  4. Trimestre : 2016-3
  5. Encodage : UTF-8, sans BOM; fin de ligne Unix (LF)
  6. Plateforme : PostgreSQL 9.5.1
  7. Responsable : [email protected]
  8. Version : 0.1.3a
  9. Statut : en vigueur
  10. Résumé : Création des tables du schéma Films (boutique de films en ligne).
  11. -- =========================================================================== A
  12. */
  13. /*
  14. -- =========================================================================== B
  15. Modélisation du schéma
  16. ~~~~~~~~~~~~~~~~~~~~~~
  17. La présente modélisation découle du document de vision [ddv].
  18.  
  19. ** Pays d'origine
  20. Le pays d'origine d'un film est un attribut fréquemment utilisé, mais flou.
  21. D'une part, les co-productions se multiplient et d'autre part la base sur
  22. laquelle les «pays d'origine» sont établis varie beaucoup : est-ce la
  23. nationalité du réalisateur, du producteur, du scénariste, des principaux
  24. comédiens, des principaux bailleurs de fonds, des studios ? Pour cette raison,
  25. il a été jugé préférable de ne pas modéliser cet attribut pour les films, mais
  26. plutot de permettre de le définir sur la base des nationalités des autres
  27. entités qui llui sont associés.
  28.  
  29. ** Version originale, doublage et sous-titrage
  30. Dans le contexte d'une boutique en ligne qui diffusera ou offrira le téléchargement
  31. de la copie demandée, il faut prendre soin de ne pas «imposer» les contraintes
  32. des supports physiques utilisés autrefois (cassette, CD, DVD, BR).
  33.  
  34. Par exemple, à l’époque des supports physiques, les versions disponibles dans
  35. le commerce comprenaient des collections de doublages et de sous-titres pré-établis
  36. en fonction de l’aire de distribution. Il était souvent difficile de trouver
  37. des oeuvres doublées ou sous-titrées en allemand au Québec, alors qu'elles étaient
  38. généralement disponibles en Europe centrale.
  39.  
  40. Compte tenu de la nature des produits de notre boutique et du mode
  41. d'acheminement proposé (diffusion ou téléversement), on pourrait espérer que
  42. le client puisse commander une version avec les langues doublées et les langues
  43. sous-titrées de son choix.
  44.  
  45. Par exemple, je commande «Pirates des Caraïbes» en anglais américain, doublé
  46. en français québécois, mais sous-titré en arabe (parce que la version doublée
  47. n’est pas disponible). En résumé, je choisis ce que je veux (dans ce qui est
  48. disponible) et on me le livre.
  49.  
  50. Notes de mise en oeuvre
  51. ~~~~~~~~~~~~~~~~~~~~~~~
  52. Les clés artificielles sont généralement représentées par CHAR(n) où n a été
  53. choisi en fonction de la cardinalité pressentie des données d'essai.
  54. Par ailleurs, le caractère initial de la clé sera une lettre (majuscule)
  55. permettant de rappeler la nature de l'entité représentée (F pour film,
  56. A pour artisan, etc.). Dans une BD plus réaliste, ces clés seraient
  57. vraisemblablement représentées à l'aide d'une séquence obtenue par un type
  58. spécialisé (serial) ou un séquenceur.
  59.  
  60. On pourrait présumer que les codes internationaux des pays et des langues sont
  61. si fréquemment utilisés qu'un schéma du SGBD les contient déjà, au bénéfice
  62. des autres schémas. Dans le cadre du présent exercice, et pour rendre l'exemple
  63. autonome, nous les avons redéfinies localement. Leur initialisation utilisera
  64. toutefois des tables existantes dont le contenu est conforme aux normes ISO.
  65.  
  66. -- =========================================================================== B
  67. */
  68.  
  69. /**
  70.  * Un pays est identifié par le code ISO 3166-1 "idPays" et porte le nom français "pays".
  71.  * Le code à deux lettres a été retenu (il existe des codes à trois lettres).
  72.  * Par convention, les codes de pays sont en lettres majuscules.
  73.  * Source : http://www.iso.org/iso/fr/french_country_names_and_code_elements#y.
  74.  */
  75. CREATE TABLE Pays
  76. (
  77.   idPays CHAR(2) NOT NULL,
  78.   pays VARCHAR(60) NOT NULL,
  79.   CONSTRAINT Pays_cc0 PRIMARY KEY (idPays),
  80.   CONSTRAINT Pays_cc1 UNIQUE (pays),
  81.   CONSTRAINT Pays_id CHECK (idPays SIMILAR TO '[A-Z]{2}'),
  82.   CONSTRAINT Pays_nom CHECK (LENGTH(pays) > 0)
  83. );
  84.  
  85. /**
  86.  * La langue identifiée par le code ISO 639-1 "idLangue" porte le nom français "langue".
  87.  * Le code à deux lettres a été retenu (il existe des codes à trois lettres).
  88.  * Par convention, les codes de langue sont en lettres minuscules.
  89.  * Source : https://www.loc.gov/standards/iso639-2/php/code_list.php
  90.  */
  91. CREATE TABLE Langue
  92. (
  93.   idLangue CHAR(2) NOT NULL,
  94.   langue VARCHAR(80) NOT NULL,
  95.   CONSTRAINT Langue_cc0 PRIMARY KEY (idLangue),
  96.   CONSTRAINT Langue_cc1 UNIQUE (langue),
  97.   CONSTRAINT Langue_id CHECK (idLangue SIMILAR TO '[a-z]{2}'),
  98.   CONSTRAINT Langue_description CHECK (LENGTH(langue) > 0)
  99. );
  100.  
  101. /**
  102.  * Le film identifié par "idFilm" porte le titre "titre", est sorti en
  103.  * version (langue) originale "vo" au cours de l'année "parution" et a une durée
  104.  * de "duree" (en secondes).
  105.  */
  106. CREATE TABLE Film
  107. (
  108.   idFilm CHAR(4) NOT NULL,
  109.   titre VARCHAR(120) NOT NULL,
  110.   vo CHAR(2) NOT NULL,
  111.   parution NUMERIC(4) NOT NULL,
  112.   duree NUMERIC(6) NOT NULL,
  113.   CONSTRAINT Film_cc0 PRIMARY KEY (idFilm),
  114.   CONSTRAINT Film_ce0 FOREIGN KEY (vo) REFERENCES Langue (idLangue),
  115.   CONSTRAINT Film_id CHECK (idFilm SIMILAR TO 'F[0-9]{3}'),
  116.   CONSTRAINT Film_titre CHECK (LENGTH(titre) > 0),
  117.   CONSTRAINT Film_parution CHECK (parution > 1870),
  118.   CONSTRAINT Film_duree CHECK (duree>0)
  119. ) ;
  120.  
  121. /**
  122.  * Le film "idFilm" est disponible en la langue "idLangue" selon le mode "mode".
  123.  * Il y a deux modes : 'D' pour doublé et 'S' pour sous-titré.
  124.  */
  125. CREATE TABLE VersionDisponible
  126. (
  127.   idFilm CHAR(4) NOT NULL,
  128.   idLangue CHAR(2) NOT NULL,
  129.   mode CHAR(1) NOT NULL,
  130.   CONSTRAINT VersionDisponible_cc0 PRIMARY KEY (idFilm, idLangue, mode),
  131.   CONSTRAINT VersionDisponible_ce0 FOREIGN KEY (idFilm) REFERENCES Film,
  132.   CONSTRAINT VersionDisponible_ce1 FOREIGN KEY (idLangue) REFERENCES Langue,
  133.   CONSTRAINT VersionDisponible_mode CHECK (mode IN ('D', 'S'))
  134. );
  135.  
  136. /**
  137.  * Le genre cinématographique  identifié par "idGenre" porte le nom français "genre".
  138.  * Source : https://fr.wikipedia.org/wiki/Genre_cinématographique *** trouver mieux!
  139.  */
  140. CREATE TABLE Genre
  141. (
  142.   idGenre CHAR(4)  NOT NULL,
  143.   genre VARCHAR(40) NOT NULL,
  144.   CONSTRAINT Genre_cc0 PRIMARY KEY (idGenre),
  145.   CONSTRAINT Genre_cc1 UNIQUE (genre),
  146.   CONSTRAINT Genre_id CHECK (idGenre SIMILAR TO 'G[0-9]{3}'),
  147.   CONSTRAINT Genre_genre CHECK (LENGTH(genre) > 0)
  148. );
  149.  
  150. /**
  151.  * Le film "idFilm" appartient au genre idGenre; un film peut appartenir à plus d'une genre.
  152.  */
  153. CREATE TABLE FilmGenre
  154. (
  155.   idFilm CHAR(4) NOT NULL,
  156.   idGenre CHAR(4) NOT NULL,
  157.   CONSTRAINT FilmGenre_cc0 PRIMARY KEY (idFilm, idGenre),
  158.   CONSTRAINT FilmGenre_ce0 FOREIGN KEY (idFilm) REFERENCES Film,
  159.   CONSTRAINT FilmGenre_ce1 FOREIGN KEY (idGenre) REFERENCES Genre
  160. );
  161.  
  162. /**
  163.  * Le studio identifié par "idStudio" porte le nom "studio" et est localisé à "localisation".
  164.  */
  165. CREATE TABLE Studio
  166. (
  167.   idStudio CHAR(4) NOT NULL,
  168.   studio VARCHAR(60) NOT NULL,
  169.   localisation CHAR(2) NOT NULL,
  170.   CONSTRAINT Studio_cc0 PRIMARY KEY (idStudio),
  171.   CONSTRAINT Studio_cc1 UNIQUE(studio,localisation),
  172.   CONSTRAINT Studio_ce0 FOREIGN KEY (localisation) REFERENCES Pays(idPays),
  173.   CONSTRAINT Studio_id CHECK (idStudio SIMILAR TO 'S[0-9]{3}'),
  174.   CONSTRAINT Studio_nom CHECK (LENGTH(studio) > 0)
  175. );
  176.  
  177. /**
  178.  * Le film "idFilm" est principalement produit par le studio "idStudio"
  179.  */
  180. CREATE TABLE Production
  181. (
  182.   idFilm CHAR(4) NOT NULL,
  183.   idStudio CHAR(4) NOT NULL,
  184.   CONSTRAINT Production_cc0 PRIMARY KEY (idFilm, idStudio),
  185.   CONSTRAINT Production_ce0 FOREIGN KEY (idFilm) REFERENCES Film,
  186.   CONSTRAINT Production_ce1 FOREIGN KEY (idStudio) REFERENCES Studio
  187. );
  188.  
  189. /**
  190.  * L'artisan identifié par "idArtisan", de sexe "sexe", porte le nom "nom" et le prénom "prénom".
  191.  */
  192. CREATE TABLE Artisan
  193. (
  194.   idArtisan CHAR(4) NOT NULL,
  195.   nom VARCHAR(30) NOT NULL,
  196.   prenom VARCHAR(30) NOT NULL,
  197.   sexe CHAR (1) NOT NULL,
  198.   CONSTRAINT Artisan_cc0 PRIMARY KEY (idArtisan),
  199.   CONSTRAINT Artisan_id CHECK (idArtisan SIMILAR TO 'A[0-9]{3}'),
  200.   CONSTRAINT Artisan_sexe CHECK (sexe IN ('F', 'M', 'I')),
  201.   CONSTRAINT Artisan_nom CHECK (LENGTH(nom) > 0),
  202.   CONSTRAINT Artisan_prenom CHECK (LENGTH(prenom) > 0)
  203. );
  204.  
  205. /**
  206.  * L'artisan "idArtisan" est né le "naissance".
  207.  */
  208. CREATE TABLE Naissance
  209. (
  210.   idArtisan CHAR(4) NOT NULL,
  211.   naissance DATE NOT NULL,
  212.   CONSTRAINT Naissance_cc0 PRIMARY KEY (idArtisan),
  213.   CONSTRAINT Naissance_ce0 FOREIGN KEY (idArtisan) REFERENCES Artisan,
  214.   CONSTRAINT Naissance_naissance CHECK (EXTRACT(YEAR FROM naissance) > 1770)
  215. );
  216.  
  217. /**
  218.  * L'artisan "idArtisan" est décédé le "deces".
  219.  */
  220. CREATE TABLE Deces
  221. (
  222.   idArtisan CHAR(4) NOT NULL,
  223.   deces DATE NOT NULL,
  224.   CONSTRAINT Deces_cc0 PRIMARY KEY (idArtisan),
  225.   CONSTRAINT Deces_ce0 FOREIGN KEY (idArtisan) REFERENCES Artisan,
  226.   CONSTRAINT Deces_deces CHECK (EXTRACT(YEAR FROM deces) > 1870)
  227. );
  228.  
  229. /**
  230.  * L'artisan "idArtisan" est notationalité "nationalite"; il peut en cumuler plusieurs.
  231.  */
  232. CREATE TABLE Nationalite
  233. (
  234.   idArtisan CHAR(4) NOT NULL,
  235.   nationalite CHAR(2) NOT NULL,
  236.   CONSTRAINT Nationalite_cc0 PRIMARY KEY (idArtisan,nationalite),
  237.   CONSTRAINT Nationalite_ce0 FOREIGN KEY (idArtisan) REFERENCES Artisan,
  238.   CONSTRAINT Nationalite_ce1 FOREIGN KEY (nationalite) REFERENCES Pays(idPays)
  239. );
  240.  
  241. /**
  242.  * Le poste identifié par "idPoste" porte le nom français "poste".
  243.  */
  244. CREATE TABLE Poste
  245. (
  246.   idPoste CHAR(4) NOT NULL,
  247.   poste VARCHAR(40) NOT NULL,
  248.   CONSTRAINT Poste_cc0 PRIMARY KEY (idPoste),
  249.   CONSTRAINT Poste_id CHECK (idPoste SIMILAR TO 'P[0-9]{3}'),
  250.   CONSTRAINT Poste_poste CHECK (LENGTH(poste) > 0)
  251. );
  252.  
  253. /**
  254.  * L'artisan "idArtisan" occupe le poste "idPoste" dans le film "idFilm".
  255.  */
  256. CREATE TABLE Participation
  257. (
  258.   idArtisan CHAR(4) NOT NULL,
  259.   idPoste CHAR(4) NOT NULL,
  260.   idFilm CHAR(4) NOT NULL,
  261.   CONSTRAINT Participation_cc0 PRIMARY KEY (idArtisan, idPoste, idFilm),
  262.   CONSTRAINT Participation_ce0 FOREIGN KEY (idArtisan) REFERENCES Artisan,
  263.   CONSTRAINT Participation_ce1 FOREIGN KEY (idPoste) REFERENCES Poste,
  264.   CONSTRAINT Participation_ce2 FOREIGN KEY (idFilm) REFERENCES Film
  265. );
  266.  
  267. /**
  268.  * Une recette du film "idFilm" à l'année "annee" est de "revenu" USD.
  269.  */
  270. CREATE TABLE Recette
  271. (
  272.   idFilm CHAR(4) NOT NULL,
  273.   annee NUMERIC(4) NOT NULL,
  274.   revenu NUMERIC(9) NOT NULL,
  275.   CONSTRAINT Recette_cc0 PRIMARY KEY (idFilm, annee),
  276.   CONSTRAINT Recette_ce0 FOREIGN KEY (idFilm) REFERENCES Film,
  277.   CONSTRAINT Recette_annee CHECK (annee > 1870),                -- on pourrait faire mieux, comment ?
  278.   CONSTRAINT Recette_revenu CHECK (revenu >= 0)
  279. );
  280.  
  281. /*
  282. -- =========================================================================== Z
  283. Contributeurs :
  284.  
  285. Adresse, droits d'auteur et copyright :
  286.   Groupe Metis
  287.   Département d'informatique
  288.   Faculté des sciences
  289.   Université de Sherbrooke
  290.   Sherbrooke (Québec)  J1K 2R1
  291.   Canada
  292.   http://info.usherbrooke.ca/llavoie/
  293.   [CC-BY-NC-4.0 (http://creativecommons.org/licenses/by-nc/4.0)]
  294.  
  295. Tâches projetées :
  296.   NIL
  297.  
  298. Tâches réalisées :
  299.   2016-09-18 (LL) : Retrait du pays d'origine du film.
  300.   2016-09-17 (LL) : Ajout des versions sous-titrées.
  301.   2016-09-16 (CK) : Création
  302.  
  303. Références :
  304. [ddv] http://info.usherbrooke.ca/llavoie/enseignement/Exemples/Films
  305.  
  306. -- -----------------------------------------------------------------------------
  307. -- fin de Exemples/Films/Films_cre.sql
  308. -- =========================================================================== Z
  309. */
  310.  
  311. /*
  312. -- =========================================================================== A
  313. Activité : IFT187
  314. Trimestre : 2016-3
  315. Encodage : UTF-8, sans BOM; fin de ligne Unix (LF)
  316. Plateforme : PostgreSQL 9.5.1
  317. Responsable : [email protected]
  318. Version : 0.1.0b
  319. Statut : en vigueur
  320. Résumé : Destruction des tables du schéma.
  321. -- =========================================================================== A
  322. */
  323.  
  324. /*
  325. -- =========================================================================== B
  326. Destruction des tables du schéma correspondant au problème de boutique en ligne
  327. de films. Pour plus d'information, voir Films_cre.sql
  328.  
  329. Notes de mise en oeuvre
  330. (a) aucune.
  331. -- =========================================================================== B
  332. */
  333.  
  334. DELETE FROM FilmGenre;
  335. DELETE FROM Production;
  336. DELETE FROM Deces;
  337. DELETE FROM Naissance;
  338. DELETE FROM Nationalite;
  339. DELETE FROM Participation;
  340. DELETE FROM Artisan;
  341. DELETE FROM Recette ;
  342. DELETE FROM VersionDisponible ;
  343. DELETE FROM Film ;
  344. DELETE FROM Langue;
  345. DELETE FROM Pays;
  346. DELETE FROM Genre;
  347. DELETE FROM Poste;
  348. DELETE FROM Studio;
  349.  
  350. /*
  351. -- =========================================================================== Z
  352. Contributeurs :
  353.  
  354. Adresse, droits d'auteur et copyright :
  355.   Groupe Metis
  356.   Département d'informatique
  357.   Faculté des sciences
  358.   Université de Sherbrooke
  359.   Sherbrooke (Québec)  J1K 2R1
  360.   Canada
  361.   http://info.usherbrooke.ca/llavoie/
  362.   [CC-BY-NC-4.0 (http://creativecommons.org/licenses/by-nc/4.0)]
  363.  
  364. Tâches projetées :
  365. NIL
  366.  
  367. Tâches réalisées :
  368. 2016-09-16 (CK) :Création
  369.  
  370. Références :
  371. [mod] http://info.usherbrooke.ca/llavoie/enseignement/Modules/
  372.  
  373. -- -----------------------------------------------------------------------------
  374. -- fin de Exemples/Evaluation/Evaluation_drop.sql
  375. -- =========================================================================== Z
  376. */
  377.  
  378. /*
  379. -- =========================================================================== A
  380. Activité : IFT187
  381. Trimestre : 2016-3
  382. Encodage : UTF-8, sans BOM; fin de ligne Unix (LF)
  383. Plateforme : PostgreSQL 9.5.1
  384. Responsable : [email protected]
  385. Version : 0.1.0b
  386. Statut : en vigueur
  387. Résumé : Destruction des tables du schéma.
  388. -- =========================================================================== A
  389. */
  390.  
  391. /*
  392. -- =========================================================================== B
  393. Destruction des tables du schéma correspondant au problème de boutique en ligne
  394. de films. Pour plus d'information, voir Films_cre.sql
  395.  
  396. Notes de mise en oeuvre
  397. (a) aucune.
  398. -- =========================================================================== B
  399. */
  400.  
  401. DROP TABLE Langue CASCADE;
  402. DROP TABLE Pays CASCADE;
  403. DROP TABLE Film CASCADE;
  404. DROP TABLE VersionDisponible CASCADE;
  405. DROP TABLE Genre CASCADE;
  406. DROP TABLE FilmGenre CASCADE;
  407. DROP TABLE Studio CASCADE;
  408. DROP TABLE Production CASCADE;
  409. DROP TABLE Artisan CASCADE;
  410. DROP TABLE Deces CASCADE;
  411. DROP TABLE Naissance CASCADE;
  412. DROP TABLE Nationalite CASCADE;
  413. DROP TABLE Poste CASCADE;
  414. DROP TABLE Participation CASCADE;
  415. DROP TABLE Recette CASCADE;
  416.  
  417.   /*
  418. -- =========================================================================== Z
  419. Contributeurs :
  420.  
  421. Adresse, droits d'auteur et copyright :
  422.   Groupe Metis
  423.   Département d'informatique
  424.   Faculté des sciences
  425.   Université de Sherbrooke
  426.   Sherbrooke (Québec)  J1K 2R1
  427.   Canada
  428.   http://info.usherbrooke.ca/llavoie/
  429.   [CC-BY-NC-4.0 (http://creativecommons.org/licenses/by-nc/4.0)]
  430.  
  431. Tâches projetées :
  432. NIL
  433.  
  434. Tâches réalisées :
  435. 2016-09-16 (CK) :Création
  436.  
  437. Références :
  438. [mod] http://info.usherbrooke.ca/llavoie/enseignement/Modules/
  439.  
  440. -- -----------------------------------------------------------------------------
  441. -- fin de Exemples/Evaluation/Evaluation_drop.sql
  442. -- =========================================================================== Z
  443. */
  444.  
  445. /*
  446. -- =========================================================================== A
  447. Activité : IFT187
  448. Trimestre : 2016-3
  449. Encodage : UTF-8, sans BOM; fin de ligne Unix (LF)
  450. Plateforme : PostgreSQL 9.5.1
  451. Responsable : [email protected]
  452. Version : 0.1.0b
  453. Statut : en vigueur
  454. Résumé : Insertions pour tester le bon fonctionnement de nos requêtes
  455. -- =========================================================================== A
  456. */
  457. /*
  458. -- =========================================================================== B
  459. Notes de mise en oeuvre
  460. ~~~~~~~~~~~~~~~~~~~~~~~
  461. ...
  462.  
  463. -- =========================================================================== B
  464. */
  465.  
  466. --Tests pour la requête no 1:
  467.  
  468. INSERT INTO Film (idFilm, titre, vo, parution, duree) VALUES --Insertion d'un film inventé
  469.  ('F021','Comment faire un TP un dimanche matin en 2 étapes faciles', 'fr', 2016, 2000);
  470.  
  471. INSERT INTO Participation(idArtisan, idFilm, idPoste) VALUES --Insertion de plusieurs artisans dans le film inventé pour voir si le nombre
  472.                                  --correspond bien au nombre de tuples implémentées (Ça fonctionne).
  473.  ('A000','F021','P002'),
  474.  ('A001','F021','P002'),
  475.  ('A002','F021','P002'),
  476.  ('A003','F021','P002'),
  477.  ('A004','F021','P002');
  478.  
  479. /*******************************************************************************************************************************/
  480.  
  481. --Tests pour la requête no2:
  482.  
  483. INSERT INTO Film (idFilm, titre, vo, parution, duree) VALUES --Insertion de plusieurs films sortis dans la décennie 1950 (non-utilisée
  484.                                  --initialement) pour voir si le nombre correspond bien au nombre de tuples
  485.                                  --implémentées (Ça fonctionne).
  486.  ('F022','Comment adorer faire un TP un dimanche matin en 2 étapes faciles', 'fr', 1956, 2000),
  487.  ('F023','Comment prouver que le film F022 a un titre impossible en 2 étapes faciles', 'fr', 1951, 2000),
  488.  ('F024','Comment trouver des idées de titre en 2 étapes faciles', 'fr', 1952, 2000),
  489.  ('F025','Eh bien, il faut faire comme je fais', 'fr', 1950, 2000),
  490.  ('F026','C est-à-dire des choses assez farfelues', 'fr', 1959, 2000),
  491.  ('F027','Parce que je suis clairement en manque d idée', 'fr', 1960, 2000), --Les deux dernières ne devraient pas y être
  492.  ('F028','Et que c est tout ce qui me vient en tête', 'fr', 1949, 2000);
  493.  
  494. /*******************************************************************************************************************************/
  495.  
  496. --Tests pour la requête no3:
  497.  
  498. --Ici, je n'insère rien, car maintenant que j'ai inséré 5 films dans la décennie 1950, cela devrait être
  499. --celle-ci qui comporte le plus de films. (Ça fonctionne).
  500.  
  501. /*******************************************************************************************************************************/
  502.  
  503. --Tests pour la requête no4:
  504.  
  505. INSERT INTO Artisan (idArtisan, nom, prenom, sexe) VALUES --Insertion d'artisans qui me seront utile pour le reste du fichier
  506.  ('A100', 'Lavoie', 'Luc', 'M'),
  507.  ('A102', 'Vaugeois', 'Frédéric', 'M'),
  508.  ('A103', 'Khoa', 'Patrick', 'M'),
  509.  ('A104', 'Khnaisser', 'Christina', 'M'),
  510.  ('A105', 'Codd', 'Edgar Frank', 'M'),
  511.  ('A106', 'Graton', 'Elvis', 'M'),
  512.  ('A107', 'Presley', 'Elvis', 'M');
  513.  
  514. INSERT INTO Participation (idFilm, idArtisan, idPoste) VALUES --Insertion d'artisans ayant participé à des films avec des postes qui étaient
  515.                                   --initialement inoccupés selon vos propres insertions (P001,P004 et P007 à P016)
  516.                                   --en ne laissant que P016 (doubleur) d'inoccupé, qui devrait être le seul affiché.
  517.                                   --(Ça fonctionne).
  518.  ('F021','A100','P001'),
  519.  ('F022','A100','P004'),
  520.  ('F023','A100','P007'),
  521.  ('F024','A100','P008'),
  522.  ('F025','A100','P009'),
  523.  ('F026','A100','P010'),
  524.  ('F027','A100','P011'),
  525.  ('F028','A100','P012'),
  526.  ('F021','A100','P013'),
  527.  ('F022','A100','P014'),
  528.  ('F023','A100','P015');
  529.  
  530. /*******************************************************************************************************************************/
  531.  
  532. --Tests pour la requête no5:
  533.  
  534. INSERT INTO Participation (idFilm, idArtisan, idPoste) VALUES --Insertions de plusieurs Artisans dans participations qui testeront toutes
  535.                                   --les variantes de notre requête. (Ça fonctionne).
  536.  ('F021','A102','P000'),
  537.  ('F021','A102','P003'),
  538.  ('F022','A102','P003'), --Ici, comme cet homme a été réalisateur-producteur une fois, mais qu'il n'a pas toujours produit ses films, il
  539.                      --Ne devrait pas apparaître.
  540.  ('F024','A103','P000'),
  541.  ('F025','A103','P000'), --Ici, comme cet homme n'a jamais été réalisateur, il ne devrait pas apparaître même s'il a toujours produit ses films.
  542.  
  543.  ('F026','A104','P000'),
  544.  ('F027','A104','P003'),
  545.  ('F027','A104','P000'),
  546.  ('F028','A104','P003'), --Ici, comme cette femme a été réalisatrice-productrice une fois et qu'il a produit au moins un autre film, elle
  547.              --n'a pas produit TOUS ses films, donc elle ne devrait pas apparaître.
  548.  ('F023','A105','P000'),
  549.  ('F023','A105','P003'),
  550.  ('F024','A105','P000'),
  551.  ('F024','A105','P001'),
  552.  ('F025','A105','P000'),
  553.  ('F025','A105','P001'),
  554.  ('F026','A105','P001'),
  555.  ('F026','A105','P000'); --Ici, comme cet homme a été réalisateur-producteur une fois et qu'il a produit tous ses films, il devrait apparaître.
  556.  
  557. /*******************************************************************************************************************************/
  558.  
  559. --Tests pour la requête no6:
  560.  
  561. --Ici, je n'insère rien non plus, car avec mes dernières insertion pour la requête no5, on ne devrait pas voir apparaître 'A102' car il n'a eu
  562. --que deux postes sur un seul des deux films dans lequel il a joué. On ne devrait pas voir 'A103', car il n'a jamais eu deux postes dans les films
  563. --auxquels il a participé. On ne devrait pas voir 'A104', car elle n'a eu deux postes que sur un film sur les trois auxquels elle a participé.
  564. --Finalement, on devrait voir apparaître 'A105', car il a toujours eu deux postes dans les films pour lesquels il a joué. (Ça fonctionne).
  565. /*
  566. -- =========================================================================== Z
  567. Contributeurs :
  568.  
  569. Adresse, droits d'auteur et copyright :
  570.   Groupe Metis
  571.   Département d'informatique
  572.  Faculté des sciences
  573.  Université de Sherbrooke
  574.  Sherbrooke (Québec)  J1K 2R1
  575.  Canada
  576.  http://info.usherbrooke.ca/llavoie/
  577.  [CC-BY-NC-4.0 (http://creativecommons.org/licenses/by-nc/4.0)]
  578.  
  579. Tâches projetées :
  580.  NIL
  581.  
  582. Tâches réalisées :
  583.  2016-09-25 (LL) : Création
  584.  
  585. Références :
  586. [ddv] http://info.usherbrooke.ca/llavoie/enseignement/Exemples/Films
  587.  
  588. -- -----------------------------------------------------------------------------
  589. -- fin de Films_ess03.sql
  590. -- =========================================================================== Z
  591. */
  592.  
  593. /*
  594. -- =========================================================================== A
  595. Activité : IFT187
  596. Trimestre : 2016-3
  597. Encodage : UTF-8, sans BOM; fin de ligne Unix (LF)
  598. Plateforme : PostgreSQL 9.5.1
  599. Responsable : [email protected]
  600. Version : 0.1.0b
  601. Statut : en vigueur
  602. Résumé : Initialisation des tables du schéma.
  603. -- =========================================================================== A
  604. */
  605. /*
  606. -- =========================================================================== B
  607. Initialisation du schéma correspondant au problème de boutique de films en ligne.
  608. ...
  609.  
  610. Notes de mise en oeuvre
  611. L'initialisation des tables Pays et Langue repose sur la dispoibilité des tables
  612. du schéma ISO. Pour le moment elles ont été crées dans le schéma Film, pour
  613. simplifier la référence.
  614. -- =========================================================================== B
  615. */
  616.  
  617. /**
  618.  * Un pays est identifié par le code ISO 3166-1 "idPays" et son nom français est "pays".
  619.  * Le code a deux lettres a été retenu (il existe des codes à trois lettres).
  620.  * Par convention, les codes de pays sont en lettres majuscules.
  621.  * Source : http://www.iso.org/iso/fr/french_country_names_and_code_elements#y.
  622.  */
  623. INSERT INTO Pays (idPays, pays)
  624.   SELECT UPPER(code2) AS idPays, fr AS pays FROM ISO_3166_1;
  625.  
  626. /**
  627.  * La langue identifiée par le code ISO 639-1 "idLangue" porte le nom  français "langue".
  628.  * Le code a deux lettres a été retenu (il existe des codes à trois lettres).
  629.  * Par convention, les codes de langue sont en lettres minuscules.
  630.  * Source : https://www.loc.gov/standards/iso639-2/php/code_list.php
  631.  * Note : certaines descriptions de langue (ou de groupe linguistique) sont
  632.  *        parfois très longues; pour le vérifier :
  633.  *        SELECT code3, fr, length(fr) FROM ISO_639_3 WHERE length(fr) > 60;
  634.  */
  635. INSERT INTO Langue (idLangue, langue)
  636.   SELECT LOWER(code2) AS idLangue, fr AS langue FROM ISO_639_2 JOIN ISO_639_3 USING (code3);
  637.  
  638. /**
  639.  * Poste
  640.  */
  641. INSERT INTO Poste(idPoste, poste) VALUES('P000','Producteur');
  642. INSERT INTO Poste(idPoste, poste) VALUES('P001','Assistant producteur');
  643. INSERT INTO Poste(idPoste, poste) VALUES('P002','Scénariste');
  644. INSERT INTO Poste(idPoste, poste) VALUES('P003','Réalisateur');
  645. INSERT INTO Poste(idPoste, poste) VALUES('P004','Assistant réalisateur');
  646. INSERT INTO Poste(idPoste, poste) VALUES('P005','Acteur');
  647. INSERT INTO Poste(idPoste, poste) VALUES('P006','Monteur');
  648. INSERT INTO Poste(idPoste, poste) VALUES('P007','Cameraman');
  649. INSERT INTO Poste(idPoste, poste) VALUES('P008','Preneur de son');
  650. INSERT INTO Poste(idPoste, poste) VALUES('P009','Chef décorateur');
  651. INSERT INTO Poste(idPoste, poste) VALUES('P010','Maquilleur');
  652. INSERT INTO Poste(idPoste, poste) VALUES('P011','Costumier');
  653. INSERT INTO Poste(idPoste, poste) VALUES('P012','Directeur technique');
  654. INSERT INTO Poste(idPoste, poste) VALUES('P013','Cascadeur');
  655. INSERT INTO Poste(idPoste, poste) VALUES('P014','Auteur de doublage');
  656. INSERT INTO Poste(idPoste, poste) VALUES('P015','Auteur de sous-titrage');
  657. INSERT INTO Poste(idPoste, poste) VALUES('P016','Doubleur');
  658. INSERT INTO Poste(idPoste, poste) VALUES('P017','Compositeur');
  659.  
  660. /**
  661.  * Genre
  662.  */
  663. INSERT INTO Genre(idGenre, genre) VALUES('G000','Action');
  664. INSERT INTO Genre(idGenre, genre) VALUES('G001','Animation');
  665. INSERT INTO Genre(idGenre, genre) VALUES('G002','Aventure');
  666. INSERT INTO Genre(idGenre, genre) VALUES('G003','Catastrophe');
  667. INSERT INTO Genre(idGenre, genre) VALUES('G004','Comédie');
  668. INSERT INTO Genre(idGenre, genre) VALUES('G005','Danse');
  669. INSERT INTO Genre(idGenre, genre) VALUES('G006','Documentaire');
  670. INSERT INTO Genre(idGenre, genre) VALUES('G007','Dramatique');
  671. INSERT INTO Genre(idGenre, genre) VALUES('G008','Espionnage');
  672. INSERT INTO Genre(idGenre, genre) VALUES('G009','Guerre');
  673. INSERT INTO Genre(idGenre, genre) VALUES('G010','Historique');
  674. INSERT INTO Genre(idGenre, genre) VALUES('G011','Horreur');
  675. INSERT INTO Genre(idGenre, genre) VALUES('G012','Comédie musicale');
  676. INSERT INTO Genre(idGenre, genre) VALUES('G013','Mystère');
  677. INSERT INTO Genre(idGenre, genre) VALUES('G014','Policier');
  678. INSERT INTO Genre(idGenre, genre) VALUES('G015','Politique');
  679. INSERT INTO Genre(idGenre, genre) VALUES('G016','Romantique');
  680. INSERT INTO Genre(idGenre, genre) VALUES('G017','Science-fiction');
  681. INSERT INTO Genre(idGenre, genre) VALUES('G018','Western');
  682. INSERT INTO Genre(idGenre, genre) VALUES('G019','Suspense');
  683. INSERT INTO Genre(idGenre, genre) VALUES('G020','Thriller');
  684. INSERT INTO Genre(idGenre, genre) VALUES('G021','Fantastique');
  685.  
  686. /**
  687.  * Studio
  688.  */
  689. INSERT INTO Studio(idStudio, studio, localisation) VALUES
  690.  ('S000', 'LGM Productions', 'FR'),
  691.  ('S001', 'Gaumont', 'FR'),
  692.  ('S002', 'Walt Disney Pictures', 'US'),
  693.  ('S003', 'Walt Disney Animation', 'US'),
  694.  ('S004', 'Malposo Productions', 'US'),
  695.  ('S005', 'Village Roadshow Pictures', 'US'),
  696.  ('S006', 'Cinecittà', 'IT'),
  697.  ('S007', 'Pathé Consortium Cinéma', 'FR'),
  698.  ('S008', 'Universal', 'US'),
  699.  ('S009', 'United Artists', 'US'),
  700.  ('S010', 'Pathé', 'FR');
  701.  
  702. /**
  703.  * Insertion des informations d'un artisan
  704.  * Artisan, Naissance (si connue), Deces (s'il y a lieu) et nationnalité
  705.  */
  706.  -- Régis Wargnier
  707. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  708.  ('A000', 'Wargnier', 'Régis', 'M');
  709. INSERT INTO Naissance(idArtisan, naissance) VALUES
  710.  ('A000', '1948-04-18');
  711. INSERT INTO nationalite(idartisan, nationalite) VALUES
  712.  ('A000', 'FR');
  713. -- José Garcia
  714. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  715.  ('A001', 'Garcia', 'José', 'M');
  716. INSERT INTO Naissance(idArtisan, naissance) VALUES
  717.  ('A001', '1966-03-17');
  718. INSERT INTO nationalite(idartisan, nationalite) VALUES
  719.  ('A001', 'FR'),
  720.  ('A001', 'ES');
  721. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  722.  ('A101', 'Garcia', 'José', 'M');
  723. INSERT INTO Naissance(idArtisan, naissance) VALUES
  724.  ('A101', '1946-09-01');
  725. INSERT INTO nationalite(idartisan, nationalite) VALUES
  726.  ('A101', 'AR');
  727.  
  728. -- Lucas Belvaux
  729. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  730.  ('A002', 'Belvaux', 'Lucas', 'M');
  731. INSERT INTO Naissance(idArtisan, naissance) VALUES
  732.  ('A002', '1961-11-14');
  733. INSERT INTO nationalite(idartisan, nationalite) VALUES
  734.  ('A002', 'BE');
  735.  -- Maris Gillian
  736. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  737.  ('A003', 'Gillain', 'Marie', 'F');
  738. INSERT INTO Naissance(idArtisan, naissance) VALUES
  739.  ('A003', '1975-06-18');
  740. INSERT INTO nationalite(idartisan, nationalite) VALUES
  741.  ('A003', 'BE');
  742. -- Michel Serrault
  743. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  744.  ('A004', 'Serrault', 'Michel', 'M');
  745. INSERT INTO Naissance(idArtisan, naissance) VALUES
  746.  ('A004', '1928-01-24');
  747. INSERT INTO Deces(idArtisan, deces) VALUES
  748.  ('A004', '2007-08-17');
  749. INSERT INTO nationalite(idartisan, nationalite) VALUES
  750.  ('A004', 'FR');
  751. -- Yann Malcore
  752. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  753.  ('A005', 'Malcor', 'Yann', 'M');
  754. -- Cyril Colbeau-Justin,
  755. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  756.  ('A006', 'Colbeau-Justin', 'Cyril', 'M');
  757. INSERT INTO nationalite(idartisan, nationalite) VALUES
  758.  ('A006', 'FR');
  759. -- Jean-Baptiste Dupont
  760. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  761.  ('A007', 'Dupont', 'Jean-Baptiste', 'M');
  762. INSERT INTO nationalite(idartisan, nationalite) VALUES
  763.  ('A007', 'FR');
  764. -- Patrick Doyle
  765. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  766.  ('A008', 'Doyle', 'Patrick', 'M');
  767. INSERT INTO Naissance(idArtisan, naissance) VALUES
  768.  ('A008', '1953-04-06');
  769. INSERT INTO nationalite(idartisan, nationalite) VALUES
  770.  ('A008', 'GB');
  771. -- Chris Buck
  772. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  773.  ('A009', 'Buck', 'Chris', 'M');
  774. INSERT INTO Naissance(idArtisan, naissance) VALUES
  775.  ('A009', '1960-01-01');
  776. INSERT INTO nationalite(idartisan, nationalite) VALUES
  777.  ('A009', 'US');
  778. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  779.  ('A109', 'Buck', 'Chris', 'M');
  780. INSERT INTO Deces(idArtisan, deces) VALUES
  781.  ('A109', '1920-12-01');
  782. INSERT INTO nationalite(idartisan, nationalite) VALUES
  783.  ('A109', 'AU');
  784. -- Jennifer Lee
  785. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  786.  ('A010', 'Lee', 'Jennifer', 'F');
  787. INSERT INTO Naissance(idArtisan, naissance) VALUES
  788.  ('A010', '1971-01-01');
  789. INSERT INTO nationalite(idartisan, nationalite) VALUES
  790.  ('A010', 'US');
  791. -- Peter Del Vecho
  792. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  793.  ('A011', 'Del Vecho', 'Peter', 'M');
  794. INSERT INTO Naissance(idArtisan, naissance) VALUES
  795.  ('A011', '1958-04-06');
  796. INSERT INTO nationalite(idartisan, nationalite) VALUES
  797.  ('A011', 'US');
  798. -- Clint Eastwood
  799. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  800.  ('A012', 'Eastwood', 'Clint', 'M');
  801. INSERT INTO Naissance(idArtisan, naissance) VALUES
  802.  ('A012', '1930-04-30');
  803. INSERT INTO nationalite(idartisan, nationalite) VALUES
  804.  ('A012', 'US');
  805. -- Andrew Lazar
  806. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  807.  ('A013', 'Lazar', 'Andrew', 'M');
  808. INSERT INTO nationalite(idartisan, nationalite) VALUES
  809.  ('A013', 'US');
  810. -- Ken Kaufman
  811. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  812.  ('A014', 'Kaufman', 'Ken', 'F');
  813. -- Haword Klausner
  814. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  815.  ('A015', 'Klausner', 'Haword', 'M');
  816. -- Tommy Lee Jones
  817. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  818.  ('A016', 'Lee Jones', 'Tommy', 'M');
  819. INSERT INTO Naissance(idArtisan, naissance) VALUES
  820.  ('A016', '1946-09-15');
  821. INSERT INTO nationalite(idartisan, nationalite) VALUES
  822.  ('A016', 'US');
  823. -- Donald Sutherland
  824. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  825.  ('A017', 'Sutherland', 'Donald', 'M');
  826. INSERT INTO Naissance(idArtisan, naissance) VALUES
  827.  ('A017', '1935-07-17');
  828. INSERT INTO nationalite(idartisan, nationalite) VALUES
  829.  ('A017', 'CA');
  830. -- James Garner
  831. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  832.  ('A018', 'Garner', 'James', 'M');
  833. INSERT INTO Naissance(idArtisan, naissance) VALUES
  834.  ('A018', '1928-04-07');
  835. INSERT INTO nationalite(idartisan, nationalite) VALUES
  836.  ('A018', 'US');
  837. -- Maria Gay Harden
  838. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  839.  ('A019', 'Harden', 'Maria Gay', 'F');
  840. INSERT INTO Naissance(idArtisan, naissance) VALUES
  841.  ('A019', '1959-08-14');
  842. INSERT INTO nationalite(idartisan, nationalite) VALUES
  843.  ('A019', 'US');
  844. -- Ingrid Bergman
  845. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  846.  ('A020', 'Bergman', 'Ingrid', 'F');
  847. INSERT INTO Naissance(idArtisan, naissance) VALUES
  848.  ('A020', '1915-08-29');
  849. INSERT INTO Deces(idArtisan, deces) VALUES
  850.  ('A020', '1982-08-29');
  851. INSERT INTO nationalite(idartisan, nationalite) VALUES
  852.  ('A020', 'SE');
  853. -- Marcello Mastroianni
  854. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  855.  ('A021', 'Mastroianni', 'Marcello', 'M');
  856. INSERT INTO Naissance(idArtisan, naissance) VALUES
  857.  ('A021', '1924-09-28');
  858. INSERT INTO Deces(idArtisan, deces) VALUES
  859.  ('A021', '1996-12-19');
  860. INSERT INTO nationalite(idartisan, nationalite) VALUES
  861.  ('A021', 'IT');
  862.  
  863. -- Charlie Chaplin
  864. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  865.  ('A022', 'Chaplin', 'Charlie', 'M');
  866. INSERT INTO Naissance(idArtisan, naissance) VALUES
  867.  ('A022', '1889-04-16');
  868. INSERT INTO Deces(idArtisan, deces) VALUES
  869.  ('A022', '1977-12-25');
  870. INSERT INTO nationalite(idartisan, nationalite) VALUES
  871.  ('A022', 'GB');
  872.  
  873. -- Jackie Coogan
  874. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  875.  ('A023', 'Coogan', 'Jackie', 'M');
  876. INSERT INTO Naissance(idArtisan, naissance) VALUES
  877.  ('A023', '1914-10-26');
  878. INSERT INTO Deces(idArtisan, deces) VALUES
  879.  ('A023', '1984-03-01');
  880. INSERT INTO nationalite(idartisan, nationalite) VALUES
  881.  ('A023', 'US');
  882.  
  883. -- Georgia Hale
  884. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  885.  ('A024', 'Hale', 'Georgia', 'F');
  886. INSERT INTO Naissance(idArtisan, naissance) VALUES
  887.  ('A024', '1905-06-24');
  888. INSERT INTO Deces(idArtisan, deces) VALUES
  889.  ('A024', '1985-06-07');
  890. INSERT INTO nationalite(idartisan, nationalite) VALUES
  891.  ('A024', 'US');
  892.  
  893. -- Moroni "Mack" Swain
  894. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  895.  ('A025', 'Swain', 'Moroni', 'M');
  896. INSERT INTO Naissance(idArtisan, naissance) VALUES
  897.  ('A025', '1876-02-16');
  898. INSERT INTO Deces(idArtisan, deces) VALUES
  899.  ('A025', '1935-08-25');
  900. INSERT INTO nationalite(idartisan, nationalite) VALUES
  901.  ('A025', 'US');
  902.  
  903. -- Tom Murray
  904. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  905.  ('A026', 'Murray', 'Tom', 'M');
  906. INSERT INTO Naissance(idArtisan, naissance) VALUES
  907.  ('A026', '1874-09-08');
  908. INSERT INTO Deces(idArtisan, deces) VALUES
  909.  ('A026', '1935-08-27');
  910. INSERT INTO nationalite(idartisan, nationalite) VALUES
  911.  ('A026', 'US');
  912.  
  913. -- Paulette Goddard
  914. INSERT INTO Artisan(idArtisan, nom, prenom, sexe) VALUES
  915.  ('A027', 'Goddard', 'Marion Pauline "Paulette"', 'F');
  916. INSERT INTO Naissance(idArtisan, naissance) VALUES
  917.  ('A027', '1910-06-10');
  918. INSERT INTO Deces(idArtisan, deces) VALUES
  919.  ('A027', '1990-04-23');
  920. INSERT INTO nationalite(idartisan, nationalite) VALUES
  921.  ('A027', 'US');
  922.  
  923.  
  924. /**
  925.  * Insertion des informations d'un film
  926.  * Film, Versiondisponible, FilmGenre, Production, Participation, recette
  927.  */
  928.  -- Film Pars vite et reviens tard
  929. INSERT INTO Film(idFilm, titre, vo, parution, duree) VALUES
  930.   ('F000', 'Pars vite et reviens tard', 'fr', 2007, 4500);
  931. INSERT INTO Versiondisponible(idFilm, idLangue, mode) VALUES
  932.   ('F000', 'en', 'S'),
  933.   ('F000', 'es', 'S');
  934. INSERT INTO FilmGenre(idFilm, idGenre) VALUES
  935.   ('F000', 'G014'),
  936.   ('F000', 'G020');
  937. INSERT INTO Production(idFilm, idStudio) VALUES
  938.   ('F000', 'S000'),
  939.   ('F000', 'S001');
  940. INSERT INTO Participation(idArtisan, idPoste, idFilm) VALUES
  941.   ('A000', 'P002', 'F000'),
  942.   ('A000', 'P003', 'F000'),
  943.   ('A001', 'P005', 'F000'),
  944.   ('A002', 'P005', 'F000'),
  945.   ('A003', 'P005', 'F000'),
  946.   ('A004', 'P005', 'F000'),
  947.   ('A005', 'P006', 'F000'),
  948.   ('A006', 'P000', 'F000'),
  949.   ('A007', 'P000', 'F000'),
  950.   ('A008', 'P017', 'F000');
  951. --Recette introuvable.
  952.  
  953. -- Film Frozen SAUF les acteurs.
  954.  INSERT INTO Film(idFilm, titre, vo, parution, duree) VALUES
  955.   ('F001', 'Frozen', 'en', 2013, 4800);
  956. INSERT INTO Versiondisponible(idFilm, idLangue, mode) VALUES
  957.   ('F001', 'fr', 'S'),
  958.   ('F001', 'fr', 'D'),
  959.   ('F001', 'es', 'S'),
  960.   ('F001', 'es', 'D');
  961. INSERT INTO FilmGenre(idFilm, idGenre) VALUES
  962.   ('F001', 'G001'),
  963.   ('F001', 'G002'),
  964.   ('F001', 'G004'),
  965.   ('F001', 'G021');
  966. INSERT INTO Production(idFilm, idStudio) VALUES
  967.   ('F001', 'S002'),
  968.   ('F001', 'S003');
  969. INSERT INTO Participation(idFilm, idArtisan, idPoste) VALUES
  970.   ('F001', 'A009', 'P000'),
  971.   ('F001', 'A009', 'P003'),
  972.   ('F001', 'A010', 'P003'),
  973.   ('F001', 'A009', 'P002'),
  974.   ('F001', 'A010', 'P002'),
  975.   ('F001', 'A011', 'P000');
  976. INSERT INTO Recette(idFilm, annee, revenu)
  977.   VALUES ('F001', 2013, 67391326);
  978.  
  979.  -- Film Space Cowboys
  980.  INSERT INTO Film(idFilm, titre, vo, parution, duree) VALUES
  981.   ('F002', 'Space Cowboys', 'en', 2000, 5400);
  982. INSERT INTO FilmGenre(idFilm, idGenre) VALUES
  983.   ('F002', 'G003'),
  984.   ('F002', 'G007');
  985. INSERT INTO Production(idFilm, idStudio) VALUES
  986.   ('F002', 'S004'),
  987.   ('F002', 'S005');
  988. INSERT INTO Participation(idFilm, idArtisan, idPoste) VALUES
  989.   ('F002', 'A012', 'P000'),
  990.   ('F002', 'A012', 'P003'),
  991.   ('F002', 'A012', 'P005'),
  992.   ('F002', 'A013', 'P000'),
  993.   ('F002', 'A014', 'P002'),
  994.   ('F002', 'A015', 'P002'),
  995.   ('F002', 'A016', 'P005'),
  996.   ('F002', 'A017', 'P005'),
  997.   ('F002', 'A018', 'P005'),
  998.   ('F002', 'A019', 'P005');
  999. INSERT INTO Recette(idFilm, annee, revenu)
  1000.   VALUES ('F002', 2000, 18093776);
  1001.  
  1002. -- Le Kid
  1003. INSERT INTO Film(idFilm, titre, vo, parution, duree) VALUES
  1004.  ('F003', 'The Kid', 'en', 1921, 68*60);
  1005. INSERT INTO FilmGenre(idFilm, idGenre) VALUES
  1006.  ('F003', 'G004'),
  1007.  ('F003', 'G007');
  1008. INSERT INTO Production(idFilm, idStudio) VALUES
  1009.  ('F003', 'S009');        -- United Artists
  1010. INSERT INTO Participation(idFilm, idArtisan, idPoste) VALUES
  1011.  ('F003', 'A022', 'P000'), -- Chaplin : réalisateur, scénariste, producteur, acteur, compositeur...
  1012.  ('F003', 'A022', 'P002'),
  1013.  ('F003', 'A022', 'P003'),
  1014.  ('F003', 'A022', 'P005'),
  1015.  ('F003', 'A022', 'P017'),
  1016.  ('F003', 'A023', 'P005'); -- Coogan : acteur
  1017.  
  1018. -- La ruée vers l'or
  1019. INSERT INTO Film(idFilm, titre, vo, parution, duree) VALUES
  1020.  ('F004', 'The Gold Rush', 'en', 1925, 82*60);
  1021. INSERT INTO FilmGenre(idFilm, idGenre) VALUES
  1022.  ('F004', 'G004'),
  1023.  ('F004', 'G007');
  1024. INSERT INTO Production(idFilm, idStudio) VALUES
  1025.  ('F004', 'S009');        -- United Artists
  1026. INSERT INTO Participation(idFilm, idArtisan, idPoste) VALUES
  1027.  ('F004', 'A022', 'P000'), -- Chaplin : réalisateur, scénariste, producteur, acteur, compositeur...
  1028.  ('F004', 'A022', 'P002'),
  1029.  ('F004', 'A022', 'P003'),
  1030.  ('F004', 'A022', 'P005'),
  1031.  ('F004', 'A022', 'P017'),
  1032.  ('F004', 'A024', 'P005'), -- Gorgia Hale
  1033.  ('F004', 'A025', 'P005'), -- Mack Swain
  1034.  ('F004', 'A026', 'P005'); -- Tom Murray
  1035.  
  1036. -- L'opinion publique
  1037. INSERT INTO Film(idFilm, titre, vo, parution, duree) VALUES
  1038.  ('F005', 'A Woman of Paris', 'en', 1923, 93*60);
  1039. INSERT INTO FilmGenre(idFilm, idGenre) VALUES
  1040.  ('F005', 'G007');
  1041. INSERT INTO Production(idFilm, idStudio) VALUES
  1042.  ('F005', 'S009');        -- United Artists
  1043. INSERT INTO Participation(idFilm, idArtisan, idPoste) VALUES
  1044.  ('F005', 'A022', 'P000'), -- Chaplin : réalisateur, scénariste, producteur.
  1045.  ('F005', 'A022', 'P002'),
  1046.  ('F005', 'A022', 'P003');
  1047.  -- Edna Purviance : Marie Saint Clair
  1048.  -- Clarence Geldart : le père de Marie
  1049.  -- Carl Miller : Jean Millet
  1050.  -- Lydia Knott : la mère de Jean
  1051.  -- Charles K. French : le père de Jean
  1052.  -- Adolphe Menjou : Pierre Revel
  1053.  -- Betty Morrissey : Fifi
  1054.  -- Malvina Polo : Paulette
  1055.  -- Harry Northrup (non crédité) : le valet de Revel
  1056.  
  1057. -- Les Temps modernes
  1058. INSERT INTO Film(idFilm, titre, vo, parution, duree) VALUES
  1059.  ('F006', 'The Gold Rush', 'en', 1936, 87*60);
  1060. INSERT INTO FilmGenre(idFilm, idGenre) VALUES
  1061.  ('F006', 'G004'),
  1062.  ('F006', 'G007');
  1063. INSERT INTO Production(idFilm, idStudio) VALUES
  1064.  ('F006', 'S009');        -- United Artists
  1065. INSERT INTO Participation(idFilm, idArtisan, idPoste) VALUES
  1066.  ('F006', 'A022', 'P000'), -- Chaplin : réalisateur, scénariste, producteur, acteur, compositeur...
  1067.  ('F006', 'A022', 'P002'),
  1068.  ('F006', 'A022', 'P003'),
  1069.  ('F006', 'A022', 'P005'),
  1070.  ('F006', 'A022', 'P017'),
  1071.  ('F006', 'A027', 'P005'); -- Paulette Goddard
  1072.  
  1073.  
  1074. -- Film La Dolce Vita...
  1075.  
  1076. /*
  1077. -- =========================================================================== Z
  1078. Contributeurs :
  1079.  
  1080. Adresse, droits d'auteur et copyright :
  1081.   Groupe Metis
  1082.   Département d'informatique
  1083.   Faculté des sciences
  1084.   Université de Sherbrooke
  1085.   Sherbrooke (Québec)  J1K 2R1
  1086.   Canada
  1087.   http://info.usherbrooke.ca/llavoie/
  1088.   [CC-BY-NC-4.0 (http://creativecommons.org/licenses/by-nc/4.0)]
  1089.  
  1090. Tâches projetées :
  1091.   NIL
  1092.  
  1093. Tâches réalisées :
  1094. 2016-09-16 (LL) : Création
  1095.  
  1096. Références :
  1097. [film] http://info.usherbrooke.ca/llavoie/enseignement/Exemples/Films
  1098. [ISO] http://info.usherbrooke.ca/llavoie/enseignement/Exemples/ISO
  1099.  
  1100. -- -----------------------------------------------------------------------------
  1101. -- fin de Exemples/Films/Films_ess02.sql
  1102. -- =========================================================================== Z
  1103. */
  1104.  
  1105. /*
  1106. -- =========================================================================== A
  1107. Activité : IFT187
  1108. Trimestre : 2016-3
  1109. Encodage : UTF-8, sans BOM; fin de ligne Unix (LF)
  1110. Plateforme : PostgreSQL 9.5.1
  1111. Responsable : [email protected]
  1112. Version : 0.1.0b
  1113. Statut : en vigueur
  1114. Résumé : Requête X01
  1115. -- =========================================================================== A
  1116. */
  1117. /*
  1118. -- =========================================================================== B
  1119. Notes de mise en oeuvre
  1120. ~~~~~~~~~~~~~~~~~~~~~~~
  1121. ...
  1122.  
  1123. -- =========================================================================== B
  1124. */
  1125.  
  1126. /**
  1127.  * X01.
  1128.  * Calculer le nombre d’artisans par film.
  1129.  * Donner la clé du film, le titre du film et le nombre d’artisans. Trier en ordre de titre.
  1130. **/
  1131.  
  1132. WITH
  1133.     GroupementArtisansFilms AS --Nombre d'artisans par films
  1134.     (
  1135.     SELECT DISTINCT  idFilm, COUNT (idArtisan) AS NombreArtisansFilms
  1136.     FROM Artisan JOIN Participation USING (idArtisan)
  1137.     GROUP BY idFilm
  1138.     )
  1139. SELECT DISTINCT idFilm, titre, NombreArtisansFilms --Agencement pour la beauté et pour répondre à la question
  1140. FROM Film JOIN GroupementArtisansFilms USING (idFilm)
  1141. ORDER BY titre
  1142. ;
  1143.  
  1144.  
  1145.  
  1146. /*
  1147. -- =========================================================================== Z
  1148. Contributeurs :
  1149.  
  1150. Adresse, droits d'auteur et copyright :
  1151.   Groupe Metis
  1152.   Département d'informatique
  1153.  Faculté des sciences
  1154.  Université de Sherbrooke
  1155.  Sherbrooke (Québec)  J1K 2R1
  1156.  Canada
  1157.  http://info.usherbrooke.ca/llavoie/
  1158.  [CC-BY-NC-4.0 (http://creativecommons.org/licenses/by-nc/4.0)]
  1159.  
  1160. Tâches projetées :
  1161.  NIL
  1162.  
  1163. Tâches réalisées :
  1164.  2016-09-25 (LL) : Création
  1165.  
  1166. Références :
  1167. [ddv] http://info.usherbrooke.ca/llavoie/enseignement/Exemples/Films
  1168.  
  1169. -- -----------------------------------------------------------------------------
  1170. -- fin de Films_X01.sql
  1171. -- =========================================================================== Z
  1172. */
  1173.  
  1174. /*
  1175. -- =========================================================================== A
  1176. Activité : IFT187
  1177. Trimestre : 2016-3
  1178. Encodage : UTF-8, sans BOM; fin de ligne Unix (LF)
  1179. Plateforme : PostgreSQL 9.5.1
  1180. Responsable : [email protected]
  1181. Version : 0.1.0b
  1182. Statut : en vigueur
  1183. Résumé : Requête X02
  1184. -- =========================================================================== A
  1185. */
  1186. /*
  1187. -- =========================================================================== B
  1188. Notes de mise en oeuvre
  1189. ~~~~~~~~~~~~~~~~~~~~~~~
  1190. ...
  1191.  
  1192. -- =========================================================================== B
  1193. */
  1194.  
  1195. /**
  1196. * X02.
  1197. * Sur la base de la date de parution, calculer le tableau du nombre de films par décennie.
  1198. * Présenter le résultat de façon appropriée.
  1199. **/
  1200.  
  1201. WITH
  1202.     CalculerDecennie(idFilm, Decennie) AS --Sert à changer l'annee de tous les films sortis dans une décennie
  1203.                           -- par une decennie (Ex. 1993 devient 1990).
  1204.     (
  1205.     SELECT DISTINCT idFilm, SUBSTRING (CAST (parution AS VARCHAR(4)),1,3) || '0' AS Decennie
  1206.     FROM Film
  1207.     )
  1208. SELECT Decennie, COUNT(*) AS NombreDeFilm --Nombre de films par décennie
  1209. FROM CalculerDecennie
  1210. GROUP BY Decennie
  1211. ORDER BY Decennie ASC   --Arrangement pour la beauté et pour répondre à la question
  1212. ;
  1213.  
  1214.  
  1215. /*
  1216. -- =========================================================================== Z
  1217. Contributeurs :
  1218.  
  1219. Adresse, droits d'auteur et copyright :
  1220.   Groupe Metis
  1221.   Département d'informatique
  1222.   Faculté des sciences
  1223.   Université de Sherbrooke
  1224.   Sherbrooke (Québec)  J1K 2R1
  1225.   Canada
  1226.   http://info.usherbrooke.ca/llavoie/
  1227.   [CC-BY-NC-4.0 (http://creativecommons.org/licenses/by-nc/4.0)]
  1228.  
  1229. Tâches projetées :
  1230.   NIL
  1231.  
  1232. Tâches réalisées :
  1233.   2016-09-25 (LL) : Création
  1234.  
  1235. Références :
  1236. [ddv] http://info.usherbrooke.ca/llavoie/enseignement/Exemples/Films
  1237.  
  1238. -- -----------------------------------------------------------------------------
  1239. -- fin de Films_X02.sql
  1240. -- =========================================================================== Z
  1241. */
  1242.  
  1243. /*
  1244. -- =========================================================================== A
  1245. Activité : IFT187
  1246. Trimestre : 2016-3
  1247. Encodage : UTF-8, sans BOM; fin de ligne Unix (LF)
  1248. Plateforme : PostgreSQL 9.5.1
  1249. Responsable : [email protected]
  1250. Version : 0.1.0b
  1251. Statut : en vigueur
  1252. Résumé : Requête X03
  1253. -- =========================================================================== A
  1254. */
  1255. /*
  1256. -- =========================================================================== B
  1257. Notes de mise en oeuvre
  1258. ~~~~~~~~~~~~~~~~~~~~~~~
  1259. ...
  1260.  
  1261. -- =========================================================================== B
  1262. */
  1263.  
  1264. /**
  1265.  * X03.
  1266.  * Quelle est la décennie comportant le plus de films ?
  1267.  * Présenter le résultat de façon appropriée.
  1268. **/
  1269.  
  1270. WITH
  1271.     CalculerDecennie(idFilm, Decennie) AS --Sert à changer l'annee de tous les films sortis dans une décennie
  1272.                           -- par une decennie (Ex. 1993 devient 1990).
  1273.     (
  1274.     SELECT DISTINCT idFilm, SUBSTRING (CAST (parution AS VARCHAR(4)),1,3) || '0' AS Decennie
  1275.     FROM Film
  1276.     ),
  1277.     NombreFilmsDecennie AS --Compte le nombre de films par decennie
  1278.     (
  1279.     SELECT DISTINCT Decennie, COUNT (idFilm) AS NombreFilms
  1280.     FROM CalculerDecennie
  1281.     GROUP BY Decennie
  1282.     )
  1283.  
  1284. SELECT Decennie, NombreFilms
  1285. FROM NombreFilmsDecennie
  1286. WHERE NombreFilms = (SELECT MAX(NombreFilms) FROM NombreFilmsDecennie) --La decennie qui a eu le plus de films
  1287. ;
  1288.  
  1289.  
  1290. /*
  1291. -- =========================================================================== Z
  1292. Contributeurs :
  1293.  
  1294. Adresse, droits d'auteur et copyright :
  1295.   Groupe Metis
  1296.   Département d'informatique
  1297.  Faculté des sciences
  1298.  Université de Sherbrooke
  1299.  Sherbrooke (Québec)  J1K 2R1
  1300.  Canada
  1301.  http://info.usherbrooke.ca/llavoie/
  1302.  [CC-BY-NC-4.0 (http://creativecommons.org/licenses/by-nc/4.0)]
  1303.  
  1304. Tâches projetées :
  1305.  NIL
  1306.  
  1307. Tâches réalisées :
  1308.  2016-09-25 (LL) : Création
  1309.  
  1310. Références :
  1311. [ddv] http://info.usherbrooke.ca/llavoie/enseignement/Exemples/Films
  1312.  
  1313. -- -----------------------------------------------------------------------------
  1314. -- fin de Films_X03.sql
  1315. -- =========================================================================== Z
  1316. */
  1317.  
  1318. /*
  1319. -- =========================================================================== A
  1320. Activité : IFT187
  1321. Trimestre : 2016-3
  1322. Encodage : UTF-8, sans BOM; fin de ligne Unix (LF)
  1323. Plateforme : PostgreSQL 9.5.1
  1324. Responsable : [email protected]
  1325. Version : 0.1.0b
  1326. Statut : en vigueur
  1327. Résumé : Requête X04
  1328. -- =========================================================================== A
  1329. */
  1330. /*
  1331. -- =========================================================================== B
  1332. Notes de mise en oeuvre
  1333. ~~~~~~~~~~~~~~~~~~~~~~~
  1334. ...
  1335.  
  1336. -- =========================================================================== B
  1337. */
  1338.  
  1339. /**
  1340. * X04.
  1341. * Quels sont les postes qui n’ont jamais été utilisés ?
  1342. * Présenter le résultat de façon appropriée.
  1343. * Note: Nous ne pensons pas que cela vaille la peine de mettre
  1344. * le nombre 0 dans une colonne nommée Nombre D'artisans. Ainsi,
  1345.  * nous mettons juste la clé ainsi que le poste.
  1346. **/
  1347.  
  1348. WITH
  1349.     PosteQuiOntArtisan AS --Tous les postes occupés
  1350.     (
  1351.     SELECT DISTINCT idArtisan, idPoste, poste
  1352.     FROM Participation JOIN Poste USING (idPoste)
  1353.     )
  1354.    
  1355. SELECT DISTINCT idPoste, poste --Tous les postes existants
  1356. FROM Poste
  1357. EXCEPT
  1358. SELECT DISTINCT idPoste, poste --Moins ceux qui ont été occupés au moins une fois
  1359. FROM PosteQuiOntArtisan
  1360. ORDER BY idPoste
  1361. ;
  1362.  
  1363.  
  1364. /*
  1365. -- =========================================================================== Z
  1366. Contributeurs :
  1367.  
  1368. Adresse, droits d'auteur et copyright :
  1369.   Groupe Metis
  1370.   Département d'informatique
  1371.   Faculté des sciences
  1372.   Université de Sherbrooke
  1373.   Sherbrooke (Québec)  J1K 2R1
  1374.   Canada
  1375.   http://info.usherbrooke.ca/llavoie/
  1376.   [CC-BY-NC-4.0 (http://creativecommons.org/licenses/by-nc/4.0)]
  1377.  
  1378. Tâches projetées :
  1379.   NIL
  1380.  
  1381. Tâches réalisées :
  1382.   2016-09-25 (LL) : Création
  1383.  
  1384. Références :
  1385. [ddv] http://info.usherbrooke.ca/llavoie/enseignement/Exemples/Films
  1386.  
  1387. -- -----------------------------------------------------------------------------
  1388. -- fin de Films_X04.sql
  1389. -- =========================================================================== Z
  1390. */
  1391.  
  1392. /*
  1393. -- =========================================================================== A
  1394. Activité : IFT187
  1395. Trimestre : 2016-3
  1396. Encodage : UTF-8, sans BOM; fin de ligne Unix (LF)
  1397. Plateforme : PostgreSQL 9.5.1
  1398. Responsable : [email protected]
  1399. Version : 0.1.0b
  1400. Statut : en vigueur
  1401. Résumé : Requête R06
  1402. -- =========================================================================== A
  1403. */
  1404. /*
  1405. -- =========================================================================== B
  1406. Notes de mise en oeuvre
  1407. ~~~~~~~~~~~~~~~~~~~~~~~
  1408. ...
  1409.  
  1410. -- =========================================================================== B
  1411. */
  1412.  
  1413. /**
  1414.  * X06.
  1415.  * Quels sont les artisans qui ont occupé aux moins deux postes dans tous les
  1416.  * films auxquels ils ont participé ?
  1417.  * Présenter le résultat de façon appropriée.
  1418. **/
  1419.  
  1420. WITH
  1421.     ArtisansFilms AS --Tous les artisans qui ont participé à un film
  1422.     (
  1423.     SELECT idArtisan, idFilm
  1424.     FROM Participation
  1425.     ),
  1426.    
  1427.  
  1428.  
  1429.  
  1430.  
  1431.  
  1432. /*
  1433. -- =========================================================================== Z
  1434. Contributeurs :
  1435.  
  1436. Adresse, droits d'auteur et copyright :
  1437.   Groupe Metis
  1438.   Département d'informatique
  1439.   Faculté des sciences
  1440.   Université de Sherbrooke
  1441.   Sherbrooke (Québec)  J1K 2R1
  1442.   Canada
  1443.   http://info.usherbrooke.ca/llavoie/
  1444.   [CC-BY-NC-4.0 (http://creativecommons.org/licenses/by-nc/4.0)]
  1445.  
  1446. Tâches projetées :
  1447.   NIL
  1448.  
  1449. Tâches réalisées :
  1450.   2016-09-25 (LL) : Création
  1451.  
  1452. Références :
  1453. [ddv] http://info.usherbrooke.ca/llavoie/enseignement/Exemples/Films
  1454.  
  1455. -- -----------------------------------------------------------------------------
  1456. -- fin de Films_X06.sql
  1457. -- =========================================================================== Z
  1458. */
  1459.  
  1460. /*
  1461. -- =========================================================================== A
  1462. Activité : IFT187
  1463. Trimestre : 2016-3
  1464. Encodage : UTF-8, sans BOM; fin de ligne Unix (LF)
  1465. Plateforme : PostgreSQL 9.5.1
  1466. Responsable : [email protected]
  1467. Version : 0.1.0b
  1468. Statut : en vigueur
  1469. Résumé : Requête R07
  1470. -- =========================================================================== A
  1471. */
  1472. /*
  1473. -- =========================================================================== B
  1474. Notes de mise en oeuvre
  1475. ~~~~~~~~~~~~~~~~~~~~~~~
  1476. ...
  1477.  
  1478. -- =========================================================================== B
  1479. */
  1480.  
  1481. /**
  1482.  * X07.
  1483.  * Déterminer les films qui ont un nombre d’acteurs supérieur à la moyenne du nombre
  1484.  * d’acteurs des films de la même décennie.
  1485.  * Présenter le résultat de façon appropriée.
  1486. **/
  1487.  
  1488.  
  1489. WITH
  1490.     CalculerDecennie(idFilm, Decennie) AS --Sert à changer l'année de tous les films sortis dans une décennie
  1491.                           -- par une decennie (Ex. 1993 devient 1990).
  1492.     (
  1493.     SELECT DISTINCT idFilm, SUBSTRING (CAST (parution AS VARCHAR(4)),1,3) || '0' AS Decennie
  1494.     FROM Film
  1495.     GROUP BY idFilm
  1496.     ),
  1497.     NombreDartisanParFilm AS --Nombre d'acteurs par film
  1498.     (
  1499.     SELECT DISTINCT idFilm, COUNT (DISTINCT idArtisan)  AS NombreActeursParFilm
  1500.     FROM CalculerDecennie JOIN Participation USING (idFilm)
  1501.     WHERE (idPoste = 'P005')
  1502.     GROUP BY idFilm
  1503.     ),
  1504.     FilmsNbrActeursDecennie (idFilm, NombreActeursParFilm, Decennie) AS --Nombre d'acteurs par film, groupé selon la décennie
  1505.     (
  1506.     SELECT idFilm, NombreActeursParFilm, Decennie
  1507.     FROM CalculerDecennie JOIN NombreDartisanParFilm USING (idFilm)
  1508.     ),
  1509.     MoyenneActeursParFilmAvecDecennie AS --Moyenne du nombre d'acteurs par film selon chaque décennie
  1510.     (
  1511.     SELECT DISTINCT Decennie, AVG (NombreActeursParFilm) AS MoyenneActeursParFilm
  1512.     FROM FilmsNbrActeursDecennie
  1513.     GROUP BY Decennie
  1514.     )
  1515. SELECT DISTINCT idFilm, titre, NombreActeursParFilm, Decennie, trunc(MoyenneActeursParFilm,3) AS Moyenne --Arrangement pour la beauté et pour répondre à la question
  1516. FROM FilmsNbrActeursDecennie JOIN Film USING (idFilm)
  1517.                  JOIN MoyenneActeursParFilmAvecDecennie USING (Decennie)
  1518. WHERE (FilmsNbrActeursDecennie.Decennie = MoyenneActeursParFilmAvecDecennie.Decennie) --Tous les films dont la moyenne d'acteurs est supérieure à la moyenne d'acteurs
  1519.                                               -- d'acteurs par films de leur décennie
  1520.     AND (MoyenneActeursParFilmAvecDecennie.MoyenneActeursParFilm < FilmsNbrActeursDecennie.NombreActeursParFilm)
  1521. ;
  1522.  
  1523.  
  1524. /*
  1525. -- =========================================================================== Z
  1526. Contributeurs :
  1527.  
  1528. Adresse, droits d'auteur et copyright :
  1529.   Groupe Metis
  1530.   Département d'informatique
  1531.   Faculté des sciences
  1532.   Université de Sherbrooke
  1533.   Sherbrooke (Québec)  J1K 2R1
  1534.   Canada
  1535.   http://info.usherbrooke.ca/llavoie/
  1536.   [CC-BY-NC-4.0 (http://creativecommons.org/licenses/by-nc/4.0)]
  1537.  
  1538. Tâches projetées :
  1539.   NIL
  1540.  
  1541. Tâches réalisées :
  1542.   2016-09-25 (LL) : Création
  1543.  
  1544. Références :
  1545. [ddv] http://info.usherbrooke.ca/llavoie/enseignement/Exemples/Films
  1546.  
  1547. -- -----------------------------------------------------------------------------
  1548. -- fin de Films_X07.sql
  1549. -- =========================================================================== Z
  1550. */
  1551.  
  1552. /*
  1553. -- =========================================================================== A
  1554. Activité : IFT187
  1555. Trimestre : 2016-3
  1556. Encodage : UTF-8, sans BOM; fin de ligne Unix (LF)
  1557. Plateforme : PostgreSQL 9.5.1
  1558. Responsable : [email protected]
  1559. Version : 0.1.0b
  1560. Statut : en vigueur
  1561. Résumé : Requête R08
  1562. -- =========================================================================== A
  1563. */
  1564. /*
  1565. -- =========================================================================== B
  1566. Notes de mise en oeuvre
  1567. ~~~~~~~~~~~~~~~~~~~~~~~
  1568. ...
  1569.  
  1570. -- =========================================================================== B
  1571. */
  1572.  
  1573. /**
  1574.  * X08.
  1575.  * Quelles sont les trois paires d’acteurs ayant le plus souvent joué ensemble ?
  1576.  * Pour chacune des paires, donner le nombre d’occurrences.
  1577. **/
  1578.  
  1579. WITH
  1580.     ArtisansActeursFilms AS --Tous les acteurs avec leur film
  1581.     (
  1582.     SELECT idArtisan, idFilm
  1583.     FROM Participation
  1584.     WHERE idPoste = 'P005'
  1585.     ),
  1586.     PairesDacteurs AS --Toutes les paires d'acteurs avec le nombre de films dans lesquels
  1587.               -- ils ont joué ensemble.
  1588.     (
  1589.     SELECT A.idArtisan AS pA, B.idArtisan AS pB, COUNT (A.idFilm) AS nbrFilms
  1590.     FROM ArtisansActeursFilms AS A JOIN ArtisansActeursFilms AS B USING (idFilm)
  1591.     WHERE A.idArtisan < B.idArtisan --Évite les doublons (José Garcia a joué avec José Garcia est invalide)
  1592.     GROUP BY A.idArtisan, B.idArtisan
  1593.     )
  1594. SELECT (pA,pb) AS PaireiD, (A.nom, A.prenom) AS nom1_prenom1, (B.nom, B.prenom)AS nom2_prenom2, nbrFilms --Arrangement pour beauté
  1595. FROM PairesDacteurs JOIN Artisan AS A ON (pA = A.idArtisan)
  1596.             JOIN Artisan AS B ON (pB = B.idArtisan)
  1597. ORDER BY nbrFilms DESC --On met la paire d'acteurs en ordre décroissant de nombre de films en commun dans lesquels ils ont joué
  1598. FETCH FIRST 3 ROWS ONLY --On prends les trois premières tuples de cette table décroissante pour avoir les trois paires avec le plus
  1599.             -- de films dans lesquels ils ont joué ensemble.
  1600. ;
  1601.  
  1602.  
  1603.    
  1604.  
  1605.  
  1606.  
  1607. /*
  1608. -- =========================================================================== Z
  1609. Contributeurs :
  1610.  
  1611. Adresse, droits d'auteur et copyright :
  1612.   Groupe Metis
  1613.   Département d'informatique
  1614.   Faculté des sciences
  1615.   Université de Sherbrooke
  1616.   Sherbrooke (Québec)  J1K 2R1
  1617.   Canada
  1618.   http://info.usherbrooke.ca/llavoie/
  1619.   [CC-BY-NC-4.0 (http://creativecommons.org/licenses/by-nc/4.0)]
  1620.  
  1621. Tâches projetées :
  1622.   NIL
  1623.  
  1624. Tâches réalisées :
  1625.   2016-09-25 (LL) : Création
  1626.  
  1627. Références :
  1628. [ddv] http://info.usherbrooke.ca/llavoie/enseignement/Exemples/Films
  1629.  
  1630. -- -----------------------------------------------------------------------------
  1631. -- fin de Films_X08.sql
  1632. -- =========================================================================== Z
  1633. */
Advertisement
Add Comment
Please, Sign In to add comment