From 585277a6223a03542357016034cc85a72ada7e9d Mon Sep 17 00:00:00 2001 From: danjar24 Date: Thu, 9 Oct 2025 09:40:06 +0200 Subject: [PATCH 1/3] Add TP3 --- M2/SQL/scripts/TP3.sql | 317 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 317 insertions(+) create mode 100644 M2/SQL/scripts/TP3.sql diff --git a/M2/SQL/scripts/TP3.sql b/M2/SQL/scripts/TP3.sql new file mode 100644 index 0000000..286497b --- /dev/null +++ b/M2/SQL/scripts/TP3.sql @@ -0,0 +1,317 @@ +DROP TABLE IF EXISTS Vu; +DROP TABLE IF EXISTS Aime; +DROP TABLE IF EXISTS Projection; +DROP TABLE IF EXISTS Joue; +DROP TABLE IF EXISTS Film; +DROP TABLE IF EXISTS Spectateur; +DROP TABLE IF EXISTS Salle; +DROP TABLE IF EXISTS Participant; + + +CREATE TABLE Participant( + IdP INTEGER not null, + Nom VARCHAR(50) not null, + Prenom VARCHAR(50) not null, + CONSTRAINT Participant_pk + PRIMARY KEY(IdP) +); +CREATE TABLE Salle( + IdC INTEGER not null, + Nom VARCHAR(50) not null, + CONSTRAINT Salle_pk + PRIMARY KEY(IdC) +); +CREATE TABLE Spectateur( + IdS INTEGER not null, + Prenom VARCHAR(50), + CONSTRAINT Spectateur_pk + PRIMARY KEY(IdS) +); +CREATE TABLE Film( + IdF INTEGER AUTO_INCREMENT, + Titre VARCHAR(50) not null, + Annee INTEGER, + Realisateur INTEGER not null, + CONSTRAINT Film_pk + PRIMARY KEY(IdF) +); +CREATE TABLE Joue( + IdF INTEGER not null, + IdP INTEGER not null +); +CREATE TABLE Projection( + IdF INTEGER, + IdC INTEGER not null, + Debut TIMESTAMP +); +CREATE TABLE Aime( + IdS INTEGER not null, + IdF INTEGER not null +); +CREATE TABLE Vu( + IdS INTEGER not null, + IdF INTEGER not null +); +/* Participant */ +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (1,'James','Cameron'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (2,'Leonardo','Di Caprio'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (3,'Kate','Winslet'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (4,'Charles','Chaplin'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (5,'Paulette','Goddard'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (6,'Woody','Allen'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (7,'Diane','Keaton'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (8,'Michael','Murphy'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (9,'Mariel','Hemingway'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (10,'Meryl','Streep'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (11,'Tony','Roberts'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (12,'Carol','Kane'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (13,'Sydney','Pollack'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (14,'Robert','Redford'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (15,'Patrice','Leconte'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (16,'Josiane','Balasko'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (17,'Christian','Clavier'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (18,'Gérard','Jugnot'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (19,'Thierry','Lhermitte'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (20,'Dominique','Lavanant'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (21,'Marie-Anne','Chazel'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (22,'Michel','Blanc'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (23,'Michel','Créton'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (24,'Alain','Chabat'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (25,'Jean-Pierre','Bacri'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (26,'Carole ','Bouquet'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (27,'Philippe','Noiret'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (28,'Jean-Luc','Godard'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (29,'Jean-Paul','Belmondo'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (30,'Philippe','De Broca'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (31,'Françoise','Dorléac'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (32,'Jean','Servais'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (33,'Gérard','Oury'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (34,'André','Bourvil'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (35,'Claude','Lelouch'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (36,'Christopher','Nolan'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (37,'Ellen','Page'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (38,'Cillian','Murphy'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (39,'Ken','Watanabe'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (40,'Joseph','Gordon-Levitt'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (41,'Marion','Cotillard'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (42,'Tom','Hardy'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (43,'Christian','Bale'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (44,'Anne','Hathaway'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (45,'Morgan','Freeman'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (46,'Vera','Farmiga'); +INSERT INTO Participant(IdP, Prenom, Nom) VALUES (47,'Jackie','Coogan'); +/* Film */ +INSERT INTO Film(IdF, Titre, Annee, Realisateur) VALUES (1,'Titanic',1997,1); +INSERT INTO Film(IdF, Titre, Annee, Realisateur) VALUES (2,'The Great Dictator',1940,4); +INSERT INTO Film(IdF, Titre, Annee, Realisateur) VALUES (3,'The Kid',1921,4); +INSERT INTO Film(IdF, Titre, Annee, Realisateur) VALUES (4,'Modern Times',1936,4); +INSERT INTO Film(IdF, Titre, Annee, Realisateur) VALUES (5,'Manhattan',1979,6); +INSERT INTO Film(IdF, Titre, Annee, Realisateur) VALUES (6,'Annie Hall',1977,6); +INSERT INTO Film(IdF, Titre, Annee, Realisateur) VALUES (7,'Out of Africa',1985,13); +INSERT INTO Film(IdF, Titre, Annee, Realisateur) VALUES (8,'Les Bronzés',1987,15); +INSERT INTO Film(IdF, Titre, Annee, Realisateur) VALUES (9,'Didier',1997,24); +INSERT INTO Film(IdF, Titre, Annee, Realisateur) VALUES (10,'Grosse fatigue',1994,22); +INSERT INTO Film(IdF, Titre, Annee, Realisateur) VALUES (11,'A bout de souffle',1960,28); +INSERT INTO Film(IdF, Titre, Annee, Realisateur) VALUES (12,'L''homme de Rio',1964,30); +INSERT INTO Film(IdF, Titre, Annee, Realisateur) VALUES (13,'Pierrot le fou',1965,28); +INSERT INTO Film(IdF, Titre, Annee, Realisateur) VALUES (14,'Le cerveau',1969,33); +INSERT INTO Film(IdF, Titre, Annee, Realisateur) VALUES (15,'Itinéraire d''un enfant gâté',1968,35); +INSERT INTO Film(IdF, Titre, Annee, Realisateur) VALUES (16,'Inception',2010,36); +INSERT INTO Film(IdF, Titre, Annee, Realisateur) VALUES (17,'The Dark Knight Rises',2012,36); +/* Joue */ +INSERT INTO Joue(IdF, IdP) VALUES (1,2); +INSERT INTO Joue(IdF, IdP) VALUES (1,3); +INSERT INTO Joue(IdF, IdP) VALUES (2,4); +INSERT INTO Joue(IdF, IdP) VALUES (2,5); +INSERT INTO Joue(IdF, IdP) VALUES (3,4); +INSERT INTO Joue(IdF, IdP) VALUES (3,47); +INSERT INTO Joue(IdF, IdP) VALUES (4,4); +INSERT INTO Joue(IdF, IdP) VALUES (4,5); +INSERT INTO Joue(IdF, IdP) VALUES (5,6); +INSERT INTO Joue(IdF, IdP) VALUES (5,7); +INSERT INTO Joue(IdF, IdP) VALUES (5,8); +INSERT INTO Joue(IdF, IdP) VALUES (5,9); +INSERT INTO Joue(IdF, IdP) VALUES (5,10); +INSERT INTO Joue(IdF, IdP) VALUES (6,6); +INSERT INTO Joue(IdF, IdP) VALUES (6,7); +INSERT INTO Joue(IdF, IdP) VALUES (6,11); +INSERT INTO Joue(IdF, IdP) VALUES (6,12); +INSERT INTO Joue(IdF, IdP) VALUES (7,10); +INSERT INTO Joue(IdF, IdP) VALUES (7,14); +INSERT INTO Joue(IdF, IdP) VALUES (8,16); +INSERT INTO Joue(IdF, IdP) VALUES (8,17); +INSERT INTO Joue(IdF, IdP) VALUES (8,18); +INSERT INTO Joue(IdF, IdP) VALUES (8,19); +INSERT INTO Joue(IdF, IdP) VALUES (8,20); +INSERT INTO Joue(IdF, IdP) VALUES (8,21); +INSERT INTO Joue(IdF, IdP) VALUES (8,22); +INSERT INTO Joue(IdF, IdP) VALUES (8,23); +INSERT INTO Joue(IdF, IdP) VALUES (9,16); +INSERT INTO Joue(IdF, IdP) VALUES (9,24); +INSERT INTO Joue(IdF, IdP) VALUES (9,25); +INSERT INTO Joue(IdF, IdP) VALUES (10,16); +INSERT INTO Joue(IdF, IdP) VALUES (10,22); +INSERT INTO Joue(IdF, IdP) VALUES (10,26); +INSERT INTO Joue(IdF, IdP) VALUES (10,27); +INSERT INTO Joue(IdF, IdP) VALUES (10,17); +INSERT INTO Joue(IdF, IdP) VALUES (10,21); +INSERT INTO Joue(IdF, IdP) VALUES (11,29); +INSERT INTO Joue(IdF, IdP) VALUES (12,29); +INSERT INTO Joue(IdF, IdP) VALUES (12,31); +INSERT INTO Joue(IdF, IdP) VALUES (12,32); +INSERT INTO Joue(IdF, IdP) VALUES (13,29); +INSERT INTO Joue(IdF, IdP) VALUES (14,29); +INSERT INTO Joue(IdF, IdP) VALUES (14,34); +INSERT INTO Joue(IdF, IdP) VALUES (15,29); +INSERT INTO Joue(IdF, IdP) VALUES (16,2); +INSERT INTO Joue(IdF, IdP) VALUES (16,37); +INSERT INTO Joue(IdF, IdP) VALUES (16,38); +INSERT INTO Joue(IdF, IdP) VALUES (16,39); +INSERT INTO Joue(IdF, IdP) VALUES (16,40); +INSERT INTO Joue(IdF, IdP) VALUES (16,41); +INSERT INTO Joue(IdF, IdP) VALUES (16,42); +INSERT INTO Joue(IdF, IdP) VALUES (17,43); +INSERT INTO Joue(IdF, IdP) VALUES (17,44); +INSERT INTO Joue(IdF, IdP) VALUES (17,45); +INSERT INTO Joue(IdF, IdP) VALUES (17,42); +INSERT INTO Joue(IdF, IdP) VALUES (17,41); +/* Salle */ +INSERT INTO Salle(IdC, Nom) VALUES (100,'Salle 1'); +INSERT INTO Salle(IdC, Nom) VALUES (200,'Salle 2'); +INSERT INTO Salle(IdC, Nom) VALUES (300,'Salle 3'); +INSERT INTO Salle(IdC, Nom) VALUES (400,'Salle 4'); +/* Projection */ +INSERT INTO Projection(IdF, IdC, Debut) VALUES (11,100,'2025-12-15 10:15:00'); +INSERT INTO Projection(IdF, IdC, Debut) VALUES (8,100,'2025-12-15 14:30:00'); +INSERT INTO Projection(IdF, IdC, Debut) VALUES (17,100,'2025-12-15 17:05:00'); +INSERT INTO Projection(IdF, IdC, Debut) VALUES (1,100,'2025-12-15 20:05:00'); +INSERT INTO Projection(IdF, IdC, Debut) VALUES (3,200,'2025-12-15 10:00:00'); +INSERT INTO Projection(IdF, IdC, Debut) VALUES (14,200,'2025-12-15 12:00:00'); +INSERT INTO Projection(IdF, IdC, Debut) VALUES (10,200,'2025-12-15 13:35:00'); +INSERT INTO Projection(IdF, IdC, Debut) VALUES (9,200,'2025-12-15 16:05:00'); +INSERT INTO Projection(IdF, IdC, Debut) VALUES (1,200,'2025-12-15 19:10:00'); +INSERT INTO Projection(IdF, IdC, Debut) VALUES (4,300,'2025-12-15 09:50:00'); +INSERT INTO Projection(IdF, IdC, Debut) VALUES (13,300,'2025-12-15 11:30:00'); +INSERT INTO Projection(IdF, IdC, Debut) VALUES (16,300,'2025-12-15 14:00:00'); +INSERT INTO Projection(IdF, IdC, Debut) VALUES (5,300,'2025-12-15 17:05:00'); +INSERT INTO Projection(IdF, IdC, Debut) VALUES (10,300,'2025-12-15 20:10:00'); +INSERT INTO Projection(IdF, IdC, Debut) VALUES (5,400,'2025-12-15 10:10:00'); +INSERT INTO Projection(IdF, IdC, Debut) VALUES (4,400,'2025-12-15 12:30:00'); +INSERT INTO Projection(IdF, IdC, Debut) VALUES (16,400,'2025-12-15 14:30:00'); +INSERT INTO Projection(IdF, IdC, Debut) VALUES (6,400,'2025-12-15 16:45:00'); +INSERT INTO Projection(IdF, IdC, Debut) VALUES (12,400,'2025-12-15 19:50:00'); +/* Spectateur */ +INSERT INTO Spectateur(IdS, Prenom) VALUES (1,'Alban'); +INSERT INTO Spectateur(IdS, Prenom) VALUES (2,'Béatrice'); +INSERT INTO Spectateur(IdS, Prenom) VALUES (3,'Charles'); +INSERT INTO Spectateur(IdS, Prenom) VALUES (4,'Diane'); +INSERT INTO Spectateur(IdS, Prenom) VALUES (5,'Etienne'); +INSERT INTO Spectateur(IdS, Prenom) VALUES (6,'Florence'); +INSERT INTO Spectateur(IdS, Prenom) VALUES (7,'Guillaume'); +INSERT INTO Spectateur(IdS, Prenom) VALUES (8,'Hélène'); +INSERT INTO Spectateur(IdS, Prenom) VALUES (9,'Igor'); +/* Vu */ +INSERT INTO Vu(IdS, IdF) VALUES (1,17); +INSERT INTO Vu(IdS, IdF) VALUES (2,17); +INSERT INTO Vu(IdS, IdF) VALUES (3,17); +INSERT INTO Vu(IdS, IdF) VALUES (4,17); +INSERT INTO Vu(IdS, IdF) VALUES (5,17); +INSERT INTO Vu(IdS, IdF) VALUES (6,17); +INSERT INTO Vu(IdS, IdF) VALUES (7,17); +INSERT INTO Vu(IdS, IdF) VALUES (8,17); +INSERT INTO Vu(IdS, IdF) VALUES (9,4); +INSERT INTO Vu(IdS, IdF) VALUES (9,11); +INSERT INTO Vu(IdS, IdF) VALUES (6,11); +INSERT INTO Vu(IdS, IdF) VALUES (6,6); +INSERT INTO Vu(IdS, IdF) VALUES (6,9); +INSERT INTO Vu(IdS, IdF) VALUES (6,10); +INSERT INTO Vu(IdS, IdF) VALUES (6,16); +INSERT INTO Vu(IdS, IdF) VALUES (6,15); +INSERT INTO Vu(IdS, IdF) VALUES (6,12); +INSERT INTO Vu(IdS, IdF) VALUES (6,8); +INSERT INTO Vu(IdS, IdF) VALUES (6,5); +INSERT INTO Vu(IdS, IdF) VALUES (6,4); +INSERT INTO Vu(IdS, IdF) VALUES (6,7); +INSERT INTO Vu(IdS, IdF) VALUES (6,13); +INSERT INTO Vu(IdS, IdF) VALUES (6,14); +INSERT INTO Vu(IdS, IdF) VALUES (6,2); +INSERT INTO Vu(IdS, IdF) VALUES (6,3); +INSERT INTO Vu(IdS, IdF) VALUES (6,1); +/* Aime */ +INSERT INTO Aime(IdS, IdF) VALUES (1,17); +INSERT INTO Aime(IdS, IdF) VALUES (2,17); +INSERT INTO Aime(IdS, IdF) VALUES (3,17); +INSERT INTO Aime(IdS, IdF) VALUES (9,17); +INSERT INTO Aime(IdS, IdF) VALUES (9,4); +INSERT INTO Aime(IdS, IdF) VALUES (9,14); +INSERT INTO Aime(IdS, IdF) VALUES (6,8); +INSERT INTO Aime(IdS, IdF) VALUES (6,5); + +-- Start of queries + +-- Q3.1 +INSERT INTO Film VALUES ( + 18, + 'Esther', + 2009, + (SELECT IdP FROM Participant WHERE Nom = 'Di Caprio' AND Prenom = 'Leonardo') +); + +INSERT INTO Joue(IdF, IdP) VALUES ( + (SELECT IdF FROM Film WHERE Titre = 'Esther'), + (SELECT IdP FROM Participant WHERE Nom = 'Di Caprio' AND Prenom = 'Leonardo') +); + +INSERT INTO Vu(IdS, IdF) VALUES ( + (SELECT IdS FROM Spectateur WHERE Prenom = 'Florence'), + (SELECT IdF FROM Film WHERE Titre = 'Esther') +); + +-- Q3.2 +UPDATE Film SET Annee = 1978 WHERE Titre = 'Les Bronzés' AND Annee = 1987; + +-- Q3.3 +SELECT * FROM Projection p +JOIN Film f ON f.IdF = p.IdF +JOIN Salle s ON p.IdC = s.IdC +WHERE f.Titre = 'Titanic'; + +-- Q3.4 +SELECT Nom, Prenom FROM Joue j +JOIN Participant p ON j.IdP = p.IdP +JOIN Film f ON f.IdF = j.IdF +WHERE f.Titre = 'Manhattan'; + +-- Q3.5 +SELECT s.Nom FROM Salle s +JOIN Projection p ON s.IdC = p.IdC +JOIN Film f ON f.IdF = p.IdF +JOIN Joue j ON j.IdF = f.IdF +JOIN Participant act ON act.IdP = j.IdP +WHERE act.Nom = 'Balasko' AND act.Prenom = 'Josiane'; + +-- Q3.6 +SELECT f.Titre, real.Nom, real.Prenom FROM Film f +JOIN Participant real ON F.Realisateur = real.IdP +WHERE f.Annee BETWEEN 1975 AND 1990; + +-- Q3.7 +SELECT DISTINCT s.Nom FROM Salle s +JOIN Projection p on S.IdC = p.IdC +JOIN Film f ON f.IdF = p.IdF +JOIN Joue j ON f.IdF = j.IdF +JOIN Participant a ON a.IdP = j.IdP +WHERE a.Nom = 'Belmondo' AND a.Prenom = 'Jean-Paul' AND p.Debut >= '2025-12-15 18:00:00' AND p.Debut <= '2025-12-15 23:59:59'; + +-- Q3.8 +SELECT Nom, Prenom FROM Participant p +WHERE p.IdP IN ( + SELECT j.IdP FROM Joue j + JOIN Film f ON j.IdP = f.Realisateur +); + +-- Q3.9 +SELECT DISTINCT Nom, Prenom FROM Participant p +JOIN Joue j ON p.IdP = j.IdP +JOIN Film f ON j.IdF = f.IdF +WHERE p.IdP = f.Realisateur; \ No newline at end of file From beedb187f7493e0c3f4e13ec93da1e616a4820ef Mon Sep 17 00:00:00 2001 From: Arthur Danjou Date: Thu, 9 Oct 2025 10:02:04 +0200 Subject: [PATCH 2/3] =?UTF-8?q?Ajouter=20des=20requ=C3=AAtes=20SQL=20pour?= =?UTF-8?q?=20les=20questions=20Q3.10=20=C3=A0=20Q3.13=20dans=20le=20scrip?= =?UTF-8?q?t=20TP3.sql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- M2/SQL/scripts/TP3.sql | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/M2/SQL/scripts/TP3.sql b/M2/SQL/scripts/TP3.sql index 286497b..fb86333 100644 --- a/M2/SQL/scripts/TP3.sql +++ b/M2/SQL/scripts/TP3.sql @@ -314,4 +314,36 @@ WHERE p.IdP IN ( SELECT DISTINCT Nom, Prenom FROM Participant p JOIN Joue j ON p.IdP = j.IdP JOIN Film f ON j.IdF = f.IdF -WHERE p.IdP = f.Realisateur; \ No newline at end of file +WHERE p.IdP = f.Realisateur; + +-- Q3.10 +SELECT Titre FROM Film f +WHERE NOT EXISTS ( + SELECT * FROM Projection p WHERE p.IdF = f.IdF +); + +-- Q3.11 +SELECT DISTINCT s.IdS, s.Prenom, f.Titre +FROM Aime a +JOIN Spectateur s ON s.IdS = a.IdS +JOIN Film f ON f.IdF = a.IdF +WHERE NOT EXISTS ( + SELECT 1 FROM Vu v + WHERE v.IdS = a.IdS AND v.IdF = a.IdF +); + +-- Q3.12 +SELECT s.Prenom FROM Spectateur s +JOIN Vu v ON s.IdS = v.IdS +AND NOT EXISTS ( + SELECT 1 FROM Aime a + WHERE a.IdS = s.IdS +); + +-- Q3.13 +SELECT s.Prenom FROM Spectateur s +WHERE NOT EXISTS ( + SELECT 1 FROM Film f WHERE NOT EXISTS ( + SELECT 1 FROM Vu v WHERE v.IdS = s.IdS AND v.IdF = f.IdF + ) +); \ No newline at end of file From 40085147f08d0b463dd7c9fc180e33c501e0550c Mon Sep 17 00:00:00 2001 From: Arthur Danjou Date: Thu, 9 Oct 2025 11:22:42 +0200 Subject: [PATCH 3/3] =?UTF-8?q?Ajouter=20le=20script=20SQL=20complet=20pou?= =?UTF-8?q?r=20les=20exercices=201=20et=202=20avec=20les=20requ=C3=AAtes?= =?UTF-8?q?=20correspondantes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- M2/SQL/DANJOU_Arthur.sql | 101 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 M2/SQL/DANJOU_Arthur.sql diff --git a/M2/SQL/DANJOU_Arthur.sql b/M2/SQL/DANJOU_Arthur.sql new file mode 100644 index 0000000..2ee5705 --- /dev/null +++ b/M2/SQL/DANJOU_Arthur.sql @@ -0,0 +1,101 @@ +--- EXERCICE 1 --- + +-- Question 1.1 +SELECT Titre, MIN(Prix) AS 'Prix Minimum' FROM Conference; + +-- Question 1.2 +SELECT c.Titre FROM Conference c +WHERE EXISTS (SELECT * FROM Inscription i WHERE i.IDConf = c.IDConf) AND c.Titre LIKE '%Data%'; + +-- Question 1.4 +SELECT o.NomOrateur FROM Orateur o +JOIN Inscription i ON o.IDOr = i.IDOr +WHERE i.DateIns < '2025-01-20' +GROUP BY o.NomOrateur +HAVING COUNT(i.IDConf) >= 3; + +-- Question 1.4 +SELECT c.Titre, c.DateConf, COUNT(i.IDOr) AS 'Nombre d''Orateurs inscrits' FROM Conference c +JOIN Inscription i ON i.IDConf = c.IdConf +GROUP BY c.Titre, c.DateConf +ORDER BY c.DateConf ASC; + +-- Question 1.5 +SELECT o.NomOrateur, SUM(c.Prix) AS 'Prix Total payé' FROM Orateur o +JOIN Inscription i ON o.IDOr = i.IDOr +JOIN Conference c ON c.IDConf = i.IDConf +GROUP BY o.NomOrateur +ORDER BY SUM(c.Prix) DESC; + +-- Question 1.6 +SELECT o.NomOrateur, MIN(c.Prix) AS 'Prix minimal payé' , MAX(c.Prix) AS 'Prix maximal payé' FROM Orateur o +JOIN Inscription i ON o.IDOr = i.IDOr +JOIN Conference c ON c.IDConf = i.IDConf +GROUP BY o.NomOrateur; + +-- Question 1.7 +SELECT c.Titre FROM Conference c +JOIN Inscription i ON i.IDConf = c.IDConf +JOIN Orateur o ON o.IDOr = i.IDOr +WHERE o.NomOrateur = 'Jean Dupont' +ORDER BY c.Titre ASC; + +-- Question 1.8 +SELECT o.NomOrateur FROM Orateur o +WHERE NOT EXISTS ( + SELECT * FROM Conference c WHERE NOT EXISTS ( + SELECT * FROM Inscription i WHERE i.IDConf = c.IDConf AND o.IDOr = i.IDOr + ) AND C.DateConf = '2025-03-15' +); + +--- EXERCICE 2 --- + +-- Question 2.1 +SELECT COUNT(*) AS 'NombreMusees' FROM Musee; + +-- Question 2.2 +SELECT m.nom, m.ville, COUNT(o.ido) AS 'NombreOeuvres' FROM Musee m +JOIN Collection c ON m.idm = c.idm +JOIN Oeuvre o ON o.idc = c.idc +GROUP BY m.nom, m.ville +HAVING COUNT(o.ido) >= 4; + +-- Question 2.3 +SELECT o.titre, o.artiste, o.annee FROM Oeuvre o +JOIN Collection c ON o.idc = c.idc +JOIN Musee m ON c.idm = m.idm +WHERE m.ville = 'Paris' +ORDER BY o.annee ASC; + +-- Question 2.4 +SELECT AVG(o.prix_estime) AS 'Prix moyen des oeuvres de Pablo Picasso' FROM Oeuvre o +WHERE o.artiste = 'Pablo Picasso'; + +-- Question 2.5 +SELECT m.nom, COUNT(o.ido) AS 'Nombre d''oeuvres dont le prix est estimé à plus d''1 million d''euros' FROM Musee m +JOIN Collection c ON m.idm = c.idm +JOIN Oeuvre o ON c.idc = o.idc +WHERE o.prix_estime > 1000000 +GROUP BY m.nom; + +-- Question 2.6 +SELECT m.nom, MIN(o.prix_estime) AS 'Prix estimé minimal', MAX(o.prix_estime) AS 'Prix estimé maximal' FROM Musee m +JOIN Collection c ON m.idm = c.idm +JOIN Oeuvre o ON c.idc = o.idc +GROUP BY m.nom; + +-- Question 2.7 +-- SELECT AVG(prix_estime) AS 'Moyenne des prix estimés de toutes les oeuvres' FROM Oeuvre; + +SELECT o.titre, o.prix_estime FROM Oeuvre o +WHERE o.prix_estime >= (SELECT AVG(prix_estime) FROM Oeuvre) +ORDER BY o.titre ASC; + +-- Question 2.8 +SELECT m.nom FROM Musee m +WHERE NOT EXISTS ( + SELECT * FROM Oeuvre o WHERE NOT EXISTS ( + SELECT * FROM Collection c + WHERE c.idc = o.idc AND c.idm = m.idm + ) AND o.annee > 1950 +) \ No newline at end of file