diff --git a/BDD/tp/tp6/tp6.sql b/BDD/tp/tp6/tp6.sql index c7d659f..70653b4 100755 --- a/BDD/tp/tp6/tp6.sql +++ b/BDD/tp/tp6/tp6.sql @@ -60,43 +60,6 @@ CREATE TABLE Fournir ( FOREIGN KEY (num_med) REFERENCES Medicament ); -<<<<<<< HEAD -/* Q3 */ -SELECT * FROM Medecin ORDER BY nom, prenom ASC; - -/* Q4 */ -SELECT * FROM Patient WHERE age < 18 ORDER BY nom, prenom DESC; - -/* Q5 */ -SELECT Consultation.* FROM Consultation JOIN Posologie ON Consultation.num_cons = Posologie.num_cons WHERE soir IS NOT NULL; - -/* Q6 */ -SELECT Consultation.* FROM Consultation JOIN Posologie ON Consultation.num_cons = Posologie.num_cons WHERE matin > (midi + soir); - -/* Q7 */ -SELECT * FROM Laboratoire WHERE pays = 'France'; - -/* Q8 */ -SELECT * FROM Laboratoire WHERE pays <> 'France' OR code_postal = '75000'; - -/* Q9 */ -SELECT * FROM Laboratoire WHERE pays <> 'France' AND code_postal = '75000'; - -/* Q10 */ -SELECT * FROM Medicament WHERE prix > 50; - -/* Q11 */ -SELECT * FROM Medicament WHERE prix* 1.1 > 50; - -/* Q12 */ -SELECT * FROM Medicament WHERE prix < 100 AND prix * 1.2 > 125; - -/* Q13 */ -SELECT * FROM Medicament WHERE prix < 100 OR prix * 1.2 > 125; - -/* Q14 */ -SELECT * FROM Medicament WHERE prix < 100 OR prix * 1.2 > 125 AND prix * 1.2 < 150; -======= INSERT INTO Medecin VALUES (1, 'DUPONT', 'Jean'); INSERT INTO Medecin VALUES (2, 'DURAND', 'Pierre'); INSERT INTO Medecin VALUES (3, 'DUPOND', 'Paul'); @@ -119,6 +82,8 @@ INSERT INTO Consultation VALUES('C5', '2015-01-01', '10:00', 2, 5); INSERT INTO Medicament VALUES(1, 'Aspirine', 10); INSERT INTO Medicament VALUES(2, 'Paracétamol', 25); +INSERT INTO Medicament VALUES(6, 'Antistase', 48); +INSERT INTO Medicament VALUES(7, 'Marimosane', 98); INSERT INTO Medicament VALUES(3, 'Doliprane', 115); INSERT INTO Medicament VALUES(4, 'Maxilase', 100); INSERT INTO Medicament VALUES(5, 'Amoxiciline', 125); @@ -131,11 +96,12 @@ INSERT INTO Posologie VALUES(15, 5, 5, 'C5', 5); INSERT INTO Laboratoire VALUES(1, 'Laboratoire A', 1, 75001, 'Paris', 'France'); INSERT INTO Laboratoire VALUES(2, 'Laboratoire B', 2, 75002, 'Paris', 'France'); -INSERT INTO Laboratoire VALUES(3, 'Laboratoire C', 3, 75003, 'Paris', 'France'); +INSERT INTO Laboratoire VALUES(3, 'Laboratoire C', 3, NULL, 'Paris', 'France'); INSERT INTO Laboratoire VALUES(4, 'Laboratoire D', 4, 69400, 'Lyon', 'France'); INSERT INTO Laboratoire VALUES(5, 'Laboratoire E', 5, 15000, 'Aurillac', 'France'); INSERT INTO Laboratoire VALUES(6, 'Laboratoire F', 6, NULL, 'Barcelone', 'Espagne'); INSERT INTO Laboratoire VALUES(7, 'Laboratoire G', 7, 63500, 'Bioude', 'France'); +INSERT INTO Laboratoire VALUES(8, 'Laboratoire RU', 9, NULL, 'Londres', 'Royaume-Unis'); -- Question 3 @@ -153,9 +119,23 @@ SELECT Consultation.* FROM Consultation JOIN Posologie ON Consultation.num_cons -- Question 7 SELECT * FROM Laboratoire WHERE pays = 'France' AND code_postal IS NOT NULL; --- Question 8 +-- Question 8-9 a revoir c'est les meme question ???!!! -- Requette sql pour afficher les laboratoires qui ne sont pas en France ou dont le code postal ne commence pas par 63 SELECT * FROM Laboratoire WHERE pays != 'France' OR code_postal NOT LIKE '63%'; ->>>>>>> c75ba3b (modif du tp11 d'algo et du tp6 de BDD) + +-- Question 10 +SELECT * FROM Medicament WHERE prix > 50; + +-- Question 11 +SELECT * FROM Medicament WHERE prix * 1.1 > 50; + +-- Question 12 à revoir c'est pas possible comme le dit la question !! +SELECT * FROM Medicament WHERE prix < 100 AND prix*1.2 > 125; + +-- Question 13 + + +-- Question 14 is good ?? +SELECT DISTINCT pays FROM Laboratoire; \d diff --git a/BDD/tp/tp8/tp8.sql b/BDD/tp/tp8/tp8.sql index a0f6bee..5453a4e 100644 --- a/BDD/tp/tp8/tp8.sql +++ b/BDD/tp/tp8/tp8.sql @@ -54,7 +54,7 @@ INSERT INTO DRAGON VALUES('D0001', 'Smeagol', 152, 'M', 1857,'14/06/1985', 'mach INSERT INTO DRAGON VALUES ('D0002', 'Birduth', 258, 'M', 4787, '05/05/1989', 'timide', 'N', 'T01'); INSERT INTO DRAGON VALUES ('D0003', 'Negueth', 128,'F',1582,'08/08/1992', 'sincere', 'O', 'T02'); INSERT INTO DRAGON VALUES ('D0004', 'Miss Toc', 183,'F',2781,'04/07/2020', 'volage', NULL, 'T01'); -INSERT INTO DRAGON VALUES ('D0005', 'Bolong', 213,'M',754,'06/05/2010', 'macho', 'N', 'T01'); +INSERT INTO DRAGON VALUES ('D0005', 'Bolong', 213,'M',754,'06/05/2010', 'macho', 'O', 'T01'); INSERT INTO DRAGON VALUES ('D0006', 'Miloch', 83,'M',718,'29/04/2015', 'timide', 'O', 'T02'); INSERT INTO DRAGON VALUES ('D0007', 'Nessie', 168,'M',1721,'12/12/2005', 'macho', 'O', 'T02'); INSERT INTO DRAGON VALUES ('D0008', 'Tarak', 123,'F',851,'15/04/2009', 'timide', 'N', 'T03'); @@ -118,8 +118,8 @@ SELECT REPAS.date_repas, REPAS.qte, NOURRITURE.nom, NOURRITURE.calories FROM REP /* Question 6 */ SELECT NOURRITURE.numn, NOURRITURE.nom, TERRITOIRE.num_terr FROM NOURRITURE JOIN REPAS ON NOURRITURE.numn = REPAS.numn JOIN DRAGON ON REPAS.numd = DRAGON.numd JOIN TERRITOIRE ON DRAGON.num_terr = TERRITOIRE.num_terr ORDER BY REPAS.date_repas; -/* Question 7 */ -SELECT DRAGON.nom FROM DRAGON JOIN TERRITOIRE ON DRAGON.num_terr = TERRITOIRE.num_terr JOIN REPAS ON DRAGON.numD = REPAS.numD JOIN NOURRITURE ON REPAS.numN = NOURRITURE.numN WHERE DRAGON.crache_feu = 'O' AND TERRITOIRE.num_terr = 'T02' AND NOURRITURE.nom = 'Oeuf' OR NOURRITURE.nom = 'Orange' ; +/* Question 7 fonctionne pas !!! pas de territoire !!??*/ +SELECT DISTINCT DRAGON.nom FROM DRAGON JOIN TERRITOIRE ON DRAGON.num_terr = TERRITOIRE.num_terr JOIN REPAS ON DRAGON.numD = REPAS.numD JOIN NOURRITURE ON REPAS.numN = NOURRITURE.numN WHERE DRAGON.crache_feu = 'O' AND TERRITOIRE.num_terr = 'T02' AND NOURRITURE.nom = 'Oeuf' OR NOURRITURE.nom = 'Orange' ; /* Question 8 */ SELECT AMOUR.force, DRAGON.nom FROM DRAGON JOIN AMOUR ON DRAGON.numD = AMOUR.numDragon1; @@ -128,20 +128,19 @@ SELECT AMOUR.force, DRAGON.nom FROM DRAGON JOIN AMOUR ON DRAGON.numD = AMOUR.num SELECT DRAGON.nom FROM DRAGON JOIN AMOUR ON DRAGON.numD = AMOUR.numDragon1 JOIN TERRITOIRE ON TERRITOIRE.num_terr = DRAGON.num_terr WHERE DRAGON.crache_feu='O' AND 85200 AND AMOUR.force = 'un peu'; +/* Question 11 Ne fonctionne pas !!!! */ +SELECT NOURRITURE.nom FROM NOURRITURE JOIN REPAS ON NOURRITURE.numn = REPAS.numN JOIN DRAGON ON REPAS.numD = DRAGON.numD JOIN AMOUR ON DRAGON.numD = AMOUR.numDragon1 WHERE DRAGON.longeur > 200 AND AMOUR.force = 'un peu'; -/* Question 12 */ -SELECT aimant.nom, aime.nom FROM DRAGON aimant JOIN AMOUR ON aimant.numD = AMOUR.numDragon1 JOIN DRAGON AS aime ON AMOUR.numDragon2 = aime.numD; +/* Question 12 Je sais pas, je comprend pas !!! */ +SELECT aimant.nom || ' est en couple avec ' || aime.nom FROM DRAGON AS aimant JOIN AMOUR ON aimant.numD = AMOUR.numDragon1 JOIN DRAGON AS aime ON AMOUR.numDragon2 = aime.numD; /* Question 13 */ -SELECT DISTINCT DRAGON.nom FROM DRAGON JOIN REPAS ON DRAGON.numD = REPAS.numD JOIN NOURRITURE ON REPAS.numN = NOURRITURE.numN WHERE NOURRITURE.nom = 'Oeuf' AND DRAGON.numD NOT IN (SELECT DRAGON.numD FROM DRAGON JOIN REPAS ON DRAGON.numD = REPAS.numD JOIN NOURRITURE ON REPAS.numN = NOURRITURE.numN WHERE NOURRITURE.nom = 'Orange'); -/* Question 14 */ -/* */ +/* Question 14 */ +SELECT DISTINCT DRAGON.nom FROM DRAGON JOIN REPAS ON DRAGON.numD = REPAS.numD JOIN NOURRITURE ON REPAS.numN = NOURRITURE.numN WHERE NOURRITURE.nom = 'Oeuf' AND DRAGON.numD NOT IN (SELECT DRAGON.numD FROM DRAGON JOIN REPAS ON DRAGON.numD = REPAS.numD JOIN NOURRITURE ON REPAS.numN = NOURRITURE.numN WHERE NOURRITURE.nom = 'Orange'); \d diff --git a/BDD/tp/tp9/tp9.sql b/BDD/tp/tp9/tp9.sql index 1dc9f3a..eaa6073 100644 --- a/BDD/tp/tp9/tp9.sql +++ b/BDD/tp/tp9/tp9.sql @@ -90,153 +90,58 @@ INSERT INTO REPAS VALUES ('11/09/2021', 2, 'D0009', 'P0003'); INSERT INTO REPAS VALUES ('12/09/2021', 8, 'D0009', 'P0004'); INSERT INTO REPAS VALUES ('25/09/2021', 20, 'D0006', 'P0003'); +/* TP9 */ - -/* TP5 a mettre dans le terminale */ - -/* Question 1 */ -/* SELECT nom FROM DRAGON WHERE crache_feu = 'O'; */ - -/* Question 2 */ -/* SELECT nom FROM DRAGON WHERE crache_feu = 'O' AND en_amour = 'timide'; */ - -/* Question 3 */ -/* SELECT * FROM DRAGON WHERE sexe = 'F' ORDER BY longeur DESC; */ - -/* Question 4 */ -/* SELECT longeur/nb_ecailles FROM DRAGON; */ - -/* Question 5 */ -/* SELECT DISTINCT numDragon1 FROM AMOUR; */ - -/* Question 6 */ -/* SELECT numDragon1 FROM AMOUR WHERE numDragon2 = 'D0003'; */ - -/* Question 7 */ -/* SELECT numDragon2 FROM AMOUR WHERE numDragon1 = 'D0005'; */ - -/* Question 8 */ -/* SELECT numDragon1 FROM AMOUR WHERE force = 'un peu'; */ - -/* Question 9 */ -/* SELECT numDragon1, force, numDragon2 FROM AMOUR WHERE force = 'passionnement'; */ - -/* Question 10 */ -/* SELECT * FROM NOURRITURE WHERE calories < 10; */ - -/* Question 11 */ -/* SELECT * FROM REPAS JOIN NOURRITURE ON REPAS.numN = NOURRITURE.numN WHERE NOURRITURE.nom = 'Oeuf'; */ - -/* Question 12 */ -/* SELECT distinct(numD) FROM REPAS; */ - -/* Question 13 */ -/* SELECT * FROM DRAGON WHERE num_terr = 'T01'; */ - -/* Question 14 */ -/* SELECT * FROM TERRITOIRE WHERE latitude2 = 'S'; */ - - - -/* TP7*/ - -/* Question 1 */ -/* SELECT * FROM DRAGON WHERE nom LIKE 'S%'; */ - -/* Question 2 */ -/* SELECT numDragon1 || ' aime ' || numDragon2 || ' de manière : ' || force FROM Amour; */ - -/* Question 3 */ -/* SELECT nom, char_length(nom) FROM TERRITOIRE; */ - -/* Question 4 */ -/* SELECT lower(nom) FROM NOURRITURE; */ - -/* Question 5 */ -/* SELECT substr(nom, 1, 3) FROM DRAGON; */ - -/* Question 6 */ -/* SELECT to_char(current_date, 'YYYY-MM-DD'); */ - -/* Question 7 */ -/* SELECT current_date -10 as "date il y a 10 jours"; */ - -/* Question 8 */ -/* SELECT (CURRENT_DATE - '2004-01-12'::date) / 365 as age, round((current_date - '2004-01-12'::date) / 365::numeric, 3) as age_reel; */ - -/* Question 9 */ -/* SELECT ceil((current_date-'2004-01-12'::date)/365::numeric); */ - -/* Question 10 */ -/* SELECT trunc((current_date-'2004-01-12'::date)/365::numeric,1); - SELECT floor((current_date-'2004-01-12'::date)/365::numeric);*/ - -/* Question 11 */ -/* SELECT round((current_date-date_naissance::date)/365::numeric,3) FROM DRAGON; */ - -/* Question 12 */ -/* SELECT * FROM DRAGON WHERE round((current_date-date_naissance::date)/365::numeric,3)<3;*/ - -/* Question 13 */ -/* SELECT * FROM REPAS WHERE to_char(date_repas, 'MON') = 'SEP'; */ - -/* TP8*/ - -UPDATE DRAGON SET num_terr = 'T03' WHERE numD = 'D0008'; +INSERT INTO AMOUR VALUES('un peu', 'D0008', 'D0002'); /* Question 1 */ -/* SELECT DRAGON.nom FROM DRAGON JOIN TERRITOIRE ON DRAGON.num_terr = TERRITOIRE.num_terr WHERE TERRITOIRE.latitude2 = 'S'; */ - -/* Question 2 */ -/* SELECT DRAGON.nom FROM DRAGON JOIN AMOUR ON DRAGON.numD = AMOUR.numDragon1 WHERE AMOUR.force = 'un peu'; */ +SELECT Dragon.nom FROM Dragon WHERE num NOT IN (SELECT num_dragon FROM Repas WHERE num_nourriture = (SELECT num FROM Nourriture WHERE nom = 'Pomme')); -/* Question 3 */ -/* SELECT DRAGON.nom FROM DRAGON JOIN REPAS ON DRAGON.numD = REPAS.numD JOIN NOURRITURE ON REPAS.numN = NOURRITURE.numN WHERE NOURRITURE.nom = 'Oeuf'; */ +-- Question 2 +SELECT Dragon.nom FROM Dragon WHERE num NOT IN (SELECT num_dragon1 FROM Amour); -/* Question 4 */ -/* SELECT TERRITOIRE.NOM, TERRITOIRE.longitude, TERRITOIRE.latitude1 FROM TERRITOIRE JOIN DRAGON ON TERRITOIRE.num_terr = DRAGON.num_terr JOIN REPAS ON DRAGON.numD = REPAS.numD JOIN NOURRITURE ON REPAS.numN = NOURRITURE.numN WHERE NOURRITURE.nom = 'Orange'; */ +-- Question 3 +SELECT Dragon.nom FROM Dragon WHERE num NOT IN (SELECT num_dragon FROM Repas); -/* Question 5 */ -/* SELECT REPAS.date_repas, REPAS.qte, NOURRITURE.nom, NOURRITURE.calories FROM REPAS JOIN NOURRITURE ON REPAS.numN = NOURRITURE.numN WHERE REPAS.numD = 'D0008' ORDER BY REPAS.date_repas; */ +-- Question 4 +SELECT Dragon.nom FROM Dragon WHERE longueur > (SELECT longueur FROM Dragon WHERE nom = 'Smeagol'); -/* Question 6 */ -/* SELECT NOURRITURE.numn, NOURRITURE.nom, TERRITOIRE.num_terr FROM NOURRITURE JOIN REPAS ON NOURRITURE.numn = REPAS.numn JOIN DRAGON ON REPAS.numd = DRAGON.numd JOIN TERRITOIRE ON DRAGON.num_terr = TERRITOIRE.num_terr ORDER BY TERRITOIRE.num_terr; */ +-- Question 5 +SELECT Dragon.nom FROM Dragon WHERE num NOT IN (SELECT num_dragon1 FROM Amour) AND num NOT IN (SELECT num_dragon FROM Repas); -/* Question 7 */ -/* SELECT DRAGON.nom FROM DRAGON JOIN TERRITOIRE ON DRAGON.num_terr = TERRITOIRE.num_terr JOIN REPAS ON DRAGON.numD = REPAS.numD JOIN NOURRITURE ON REPAS.numN = NOURRITURE.numN WHERE DRAGON.crache_feu = 'O' AND TERRITOIRE.num_terr = 'T02' AND NOURRITURE.nom = 'Oeuf' OR NOURRITURE.nom = 'Orange' ; */ +-- Question 6 +SELECT Dragon.nom FROM Dragon WHERE sexe=0 AND num IN (SELECT num_dragon2 FROM Amour WHERE num_dragon1 NOT IN (SELECT num_dragon FROM Repas)); -/* Question 8 */ -/* SELECT AMOUR.force, DRAGON.nom FROM DRAGON JOIN AMOUR ON DRAGON.numD = AMOUR.numDragon1; */ +-- Question 7 +SELECT Nourriture.nom FROM Nourriture WHERE num NOT IN (SELECT num_nourriture FROM Repas WHERE num_dragon IN (SELECT num FROM Dragon WHERE crache_feu = 'N')); -/* Question 9 */ -/* SELECT DRAGON.nom FROM DRAGON JOIN AMOUR ON DRAGON.numD = AMOUR.numDragon1 JOIN TERRITOIRE ON TERRITOIRE.num_terr = DRAGON.num_terr WHERE DRAGON.crache_feu='O' AND 85 500); -/* Question 10 */ -/* SELECT DRAGON.nom FROM DRAGON JOIN AMOUR ON DRAGON.numD = AMOUR.numDragon1 WHERE AMOUR.force = 'passionement' AND DRAGON.en_amour='macho'; */ +-- Question 9 +SELECT nom, nb_ecailles FROM Dragon WHERE nb_ecailles > 500 AND sexe = 1 AND EXISTS (SELECT * FROM Dragon WHERE nb_ecailles > 5000); -/* Question 11 */ -/* SELECT NOURRITURE.nom FROM NOURRITURE JOIN REPAS ON NOURRITURE.numn = REPAS.numn JOIN DRAGON ON REPAS.numd = DRAGON.numd JOIN AMOUR ON DRAGON.numD = AMOUR.numDragon1 WHERE DRAGON.longeur>200 AND AMOUR.force = 'un peu'; */ +-- Question 10 +SELECT nom FROM Dragon WHERE NOT EXISTS (SELECT * FROM Amour WHERE num_dragon2 = num); -/* Question 12 */ -/* SELECT aimant.nom, aime.nom FROM DRAGON aimant JOIN AMOUR ON aimant.numD = AMOUR.numDragon1 JOIN DRAGON AS aime ON AMOUR.numDragon2 = aime.numD; */ +-- Question 11 +SELECT Dragon.nom FROM Dragon, Territoire WHERE Dragon.num_terr = Territoire.num_terr AND latitude2 = 'S'; -/* Question 13 */ -/* SELECT DISTINCT DRAGON.nom FROM DRAGON JOIN REPAS ON DRAGON.numD = REPAS.numD JOIN NOURRITURE ON REPAS.numN = NOURRITURE.numN WHERE NOURRITURE.nom = 'Oeuf' AND DRAGON.numD NOT IN (SELECT DRAGON.numD FROM DRAGON JOIN REPAS ON DRAGON.numD = REPAS.numD JOIN NOURRITURE ON REPAS.numN = NOURRITURE.numN WHERE NOURRITURE.nom = 'Orange'); */ +-- Question 12 +SELECT Dragon.nom FROM Dragon WHERE num IN (SELECT num_dragon1 FROM Amour WHERE force = 'un peu'); -/* Question 14 */ -/* */ +-- Question 13 +SELECT Dragon.nom FROM Dragon WHERE num IN (SELECT num_dragon FROM Amour) AND crache_feu = 'O' AND num_terr IN (SELECT num_terr FROM Territoire WHERE longitude > 85 AND longitude < 95); -/* TP9 */ - -INSERT INTO AMOUR VALUES('un peu', 'D0008', 'D0002'); - -/* Question 1 */ +-- Question 14 +SELECT Nourriture.nom FROM Nourriture WHERE num IN (SELECT num_nourriture FROM Repas WHERE num_dragon IN (SELECT num FROM Dragon WHERE longueur > 200 +AND num IN (SELECT num_dragon2 FROM Amour WHERE force = 'un peu'))); +-- Question 15 +SELECT Dragon.nom FROM Dragon WHERE crache_feu='O' AND num IN (SELECT num_dragon FROM Repas WHERE num_nourriture IN (SELECT num FROM Nourriture WHERE nom = 'Oeuf' OR nom = 'Orange')); -SELECT * FROM TERRITOIRE; -SELECT * FROM DRAGON; -SELECT * FROM NOURRITURE; -SELECT * FROM AMOUR; -SELECT * FROM REPAS; +-- Question 16 +SELECT Dragon.nom FROM Dragon WHERE crache_feu='O' AND num IN (SELECT num_dragon FROM Repas WHERE num_nourriture IN (SELECT num FROM Nourriture WHERE nom = 'Oeuf' OR nom = 'Orange')) +AND num_terr='T02'; \d