requete + modif table

master
Thomas MUZARD 2 years ago
parent ddb2d475fb
commit c8bac9ddfa

@ -3,6 +3,8 @@ DELETE FROM RETOUR_L;
DELETE FROM CONTIENT;
DELETE FROM AVOIR;
DELETE FROM POSSEDE;
DELETE FROM RESERVER;
DELETE FROM LOUER;
DELETE FROM LIVRAISON;
DELETE FROM FOURNISSEUR;
DELETE FROM CLIENT;
@ -27,17 +29,17 @@ INSERT INTO FOURNISSEUR
VALUES('F006', 'FOURNESOL', '3', 'Assez bon fournisseur');
INSERT INTO LIVRAISON
VALUES('l001', '12-01-2022', 'F002');
VALUES('l001', '12-11-2022', 'F002');
INSERT INTO LIVRAISON
VALUES('l002', '12-01-2022', 'F001');
VALUES('l002', '12-11-2022', 'F001');
INSERT INTO LIVRAISON
VALUES('l003', '13-01-2022', 'F004');
VALUES('l003', '13-10-2022', 'F004');
INSERT INTO LIVRAISON
VALUES('l004', '13-01-2022', 'F005');
VALUES('l004', '13-11-2022', 'F005');
INSERT INTO LIVRAISON
VALUES('l005', '13-01-2022', 'F002');
VALUES('l005', '13-10-2022', 'F002');
INSERT INTO LIVRAISON
VALUES('l006', '15-01-2022', 'F003');
VALUES('l006', '15-09-2022', 'F003');
INSERT INTO TYPES
VALUES('T001', 'jeu de strategie');
@ -64,37 +66,31 @@ INSERT INTO PRODUIT
VALUES('P006', 'Bataille Navale', '10', '20', 'T005');
INSERT INTO POSSEDE
VALUES('5', 'P002', 'l005');
VALUES('5', 'P001', 'l005');
INSERT INTO POSSEDE
VALUES('8', 'P001', 'l006');
INSERT INTO POSSEDE
VALUES('15', 'P003', 'l001');
INSERT INTO POSSEDE
VALUES('6', 'P005', 'l002');
VALUES('6', 'P004', 'l002');
INSERT INTO POSSEDE
VALUES('9', 'P004', 'l004');
INSERT INTO POSSEDE
VALUES('11', 'P006', 'l003');
INSERT INTO RESERVATION
VALUES('R002', '19-01-2022', '21-01-2022');
VALUES('R002', '19-11-2022', '21-01-2022');
INSERT INTO RESERVATION
VALUES('R003', '25-01-2022', '27-01-2022');
VALUES('R003', '25-08-2022', '27-01-2022');
INSERT INTO RESERVATION
VALUES('R004', '30-01-2022', '01-02-2022');
VALUES('R004', '30-11-2022', '01-02-2022');
INSERT INTO RESERVATION
VALUES('R005', '31-01-2022', '01-02-2022');
INSERT INTO RESERVATION
VALUES('R006', '06-02-2022', '08-02-2022');
INSERT INTO RESERVATION
VALUES('R007', '18-02-2022', '19-02-2022');
INSERT INTO RESERVATION
VALUES('R001', '01-03-2022', '02-03-2022');
VALUES('R001', '01-12-2022', '02-03-2022');
INSERT INTO CONTIENT
VALUES('5', 'P001', 'R002');
INSERT INTO CONTIENT
VALUES('2', 'P002', 'R002');
VALUES('2', 'P003', 'R002');
INSERT INTO CONTIENT
VALUES('7', 'P003', 'R001');
INSERT INTO CONTIENT
@ -102,7 +98,7 @@ VALUES('3', 'P004', 'R003');
INSERT INTO CONTIENT
VALUES('5', 'P005', 'R004');
INSERT INTO CONTIENT
VALUES('4', 'P006', 'R004');
VALUES('4', 'P001', 'R004');
INSERT INTO ETAT_PROD
VALUES('E001','1');
@ -120,18 +116,19 @@ VALUES('L003', 'Paris', '5', 'Lieu', '18-01-2022', 'E002');
INSERT INTO LOCATION
VALUES('L004', 'Lyon', '2', 'Lie', '28-01-2022', 'E001');
INSERT INTO AVOIR
VALUES('3', 'P003', 'L001');
INSERT INTO AVOIR
VALUES('5', 'P001', 'L002');
VALUES('5', 'P003', 'L002');
INSERT INTO AVOIR
VALUES('2', 'P002', 'L002');
VALUES('2', 'P001', 'L002');
INSERT INTO AVOIR
VALUES('4', 'P004', 'L003');
INSERT INTO AVOIR
VALUES('5', 'P006', 'L004');
VALUES('5', 'P001', 'L004');
INSERT INTO AVOIR
VALUES('6', 'P005', 'L004');
VALUES('6', 'P006', 'L004');
INSERT INTO ZONE_GEOGRAPHIQUE
VALUES('Z001', 'Auvergne-Rhône-Alpes');
@ -161,19 +158,39 @@ INSERT INTO ZONE_GEOGRAPHIQUE
VALUES('Z013', 'Provence-Alpes-Côte d''Azur');
INSERT INTO CLIENT
VALUES('C001', 'DUPONT', '0780526591', '12', 'Avenue du bonheur', '66500', 'Perpignan', 'Particulier', 'n', 'L003', 'R005', 'Z011');
VALUES('C001', 'DUPOND', '0780526591', '12', 'Avenue du bonheur', '66500', 'Perpignan', 'Particulier', 'n', 'Z011');
INSERT INTO CLIENT
VALUES('C002', 'DURAND', '0780525592', '10', 'Route de la martyr', '15000', 'Aurillac', 'Particulier', 'n', 'Z001');
INSERT INTO CLIENT
VALUES('C002', 'DURAND', '0780525592', '10', 'Route de la martyr', '15000', 'Aurillac', 'Particulier', 'n', 'L001', 'R002', 'Z001'); -- n° sans nom rue == NULL !!!
VALUES('C003', 'SPI', '0780526593', '11', 'Rue de la vigne', '75000', 'Paris', 'Professionel', 'y', 'Z008');
INSERT INTO CLIENT
VALUES('C003', 'DUPOND', '0780526593', '11', 'Rue de la vigne', '75000', 'Paris', 'Professionel', 'y', 'L003', 'R003', 'Z008');
VALUES('C004', 'EIFFAGE', '0780526594', '15', 'Avenue de la licorne', '75000', 'Paris', 'Professionel', 'y', 'Z008');
INSERT INTO CLIENT
VALUES('C004', 'DURANT', '0780526594', '15', 'Avenue de la licorne', '75000', 'Paris', 'Professionel', 'y', 'L003', 'R004', 'Z008');
VALUES('C005', 'GARGIA', '0780526595', '18', 'Rue du trésor', '18480', 'Saint Florent sur Cher', 'Particulier', 'n', 'Z003');
INSERT INTO CLIENT
VALUES('C005', 'DUPONCE', '0780526595', '18', 'Rue du trésor', '18480', 'Saint Florent sur Cher', 'Particulier', 'n', 'L002', 'R001', 'Z003');
VALUES('C006', 'MICHELIN', '0780526596', '19', 'Route sur plage','20400', 'Bastia', 'Professionel', 'y', 'Z005');
INSERT INTO CLIENT
VALUES('C006', 'DURANDE', '0780526596', '19', 'Route sur plage','20400', 'Bastia', 'Particulier', 'n', 'L004', 'R006', 'Z005');
VALUES('C007', 'BOUDOUL', '0780526597', '17', 'Avenue du moulin', '92130', 'Issy les Moulineaux', 'Particulier', 'n', 'Z008');
INSERT INTO CLIENT
VALUES('C007', 'DUPONCE', '0780526597', '17', 'Avenue du moulin', '92130', 'Issy les Moulineaux', 'Particulier', 'n', 'L003', 'R007', 'Z008');
VALUES('C008', 'BEEDEEZ', '0780526598', '01', 'Rue des archers', '63000', 'Clermont-Ferrand', 'Professionel', 'y', 'Z008');
INSERT INTO RESERVER
VALUES('C001', 'R003');
INSERT INTO RESERVER
VALUES('C003', 'R001');
INSERT INTO RESERVER
VALUES('C006', 'R002');
INSERT INTO RESERVER
VALUES('C007', 'R004');
INSERT INTO LOUER
VALUES('C002', 'L001');
INSERT INTO LOUER
VALUES('C004', 'L002');
INSERT INTO LOUER
VALUES('C006', 'L003');
INSERT INTO LOUER
VALUES('C005', 'L001');
INSERT INTO RETOUR_R
VALUES('2022-12-15', 'R003', 'C001');
@ -185,13 +202,13 @@ INSERT INTO RETOUR_R
VALUES('2023-01-11', 'R003', 'C004');
INSERT INTO RETOUR_L
VALUES('2022-12-15',E002, 'L003', 'C001');
VALUES('2022-12-15','E002', 'L003', 'C001');
INSERT INTO RETOUR_L
VALUES('2022-11-14',E002, 'L001', 'C002');
VALUES('2022-11-14','E002', 'L001', 'C002');
INSERT INTO RETOUR_L
VALUES('2022-11-10',E003, 'L003', 'C003');
VALUES('2022-11-10','E003', 'L003', 'C003');
INSERT INTO RETOUR_L
VALUES('2023-01-11',E003, 'L003', 'C004');
VALUES('2023-01-11','E003', 'L003', 'C004');

@ -0,0 +1,31 @@
/* Question n°1 */
SELECT DISTINCT p.nom
FROM PRODUIT p
WHERE p.id_produit NOT IN (SELECT id_produit FROM AVOIR);
/* Question n°2 */
SELECT c.nom ,l.id_location , p.nom, a.qte
FROM PRODUIT p, AVOIR a, LOCATION l, LOUER lo, CLIENT c
WHERE c.authorize_reduc = 'y' AND c.id_client = lo.id_client AND lo.id_location = l.id_location AND a.id_produit = p.id_produit AND a.id_location = l.id_location;
/* Question n°3 */
/* Ici, on supposera que se sera les produits qui ne sont jamais réserver pour différencier la question 3 de la question 1 */
SELECT DISTINCT p.nom
FROM PRODUIT p
WHERE p.id_produit NOT IN (SELECT id_produit FROM CONTIENT);
/* Question n°4 */
SELECT round((p.prix * a.qte),2) AS Prix_location, p.nom, initcap(lower(c.nom))
FROM CLIENT c, LOUER lo, LOCATION l, AVOIR a, PRODUIT p
WHERE c.type_client = 'Particulier' AND c.id_client = lo.id_client AND lo.id_location = l.id_location AND l.id_location = a.id_location AND a.id_produit = p.id_produit;
SELECT round((p.prix * a.qte),2) AS Prix_location, p.nom, initcap(lower(c.nom))
FROM CLIENT c, LOUER lo, LOCATION l, AVOIR a, PRODUIT p
WHERE c.type_client = 'Professionel' AND c.id_client = lo.id_client AND lo.id_location = l.id_location AND l.id_location = a.id_location AND a.id_produit = p.id_produit;

@ -3,6 +3,8 @@ DROP TABLE RETOUR_L;
DROP TABLE CONTIENT;
DROP TABLE AVOIR;
DROP TABLE POSSEDE;
DROP TABLE RESERVER;
DROP TABLE LOUER;
DROP TABLE LIVRAISON;
DROP TABLE FOURNISSEUR;
DROP TABLE CLIENT;
@ -40,7 +42,7 @@ CREATE TABLE PRODUIT (
);
CREATE TABLE POSSEDE (
qte_livree numeric NOT NULL,
qte_livree numeric NOT NULL CHECK(qte_livree > 0),
id_produit char(4) REFERENCES PRODUIT(id_produit),
id_livraison char(4) REFERENCES LIVRAISON(id_livraison)
);
@ -67,7 +69,7 @@ CREATE TABLE ETAT_PROD (
CREATE TABLE LOCATION (
id_location char(4) PRIMARY KEY,
nom varchar(30) NOT NULL,
note numeric NOT NULL CHECK (note > 0 AND note <= 5),
note numeric NOT NULL CHECK (note >= 0 AND note <= 5),
description varchar(50),
date_deb date NOT NULL,
etat_prod char(4) REFERENCES ETAT_PROD(etat_prod)
@ -81,27 +83,37 @@ CREATE TABLE AVOIR (
CREATE TABLE ZONE_GEOGRAPHIQUE (
num_region char(4) PRIMARY KEY,
region varchar(30) NOT NULL
region varchar(30) UNIQUE NOT NULL
);
CREATE TABLE CLIENT (
id_client char(4) PRIMARY KEY,
nom varchar(30) NOT NULL,
num_tel numeric(10) UNIQUE NOT NULL CHECK(num_tel > 0 AND num_tel < 0999999999),
num_rue numeric(3),
rue varchar(50),
num_rue numeric(3) NOT NULL,
rue varchar(50) NOT NULL,
code_postal char(5) NOT NULL,
ville varchar(30) NOT NULL,
type_client varchar(30) NOT NULL,
authorize_reduc char(1) NOT NULL CHECK(authorize_reduc = 'y' OR authorize_reduc ='n'),
id_location char(4) REFERENCES LOCATION(id_location),
id_reservation char(4) REFERENCES RESERVATION(id_reservation),
num_region char(4) REFERENCES ZONE_GEOGRAPHIQUE(num_region)
num_region char(4) REFERENCES ZONE_GEOGRAPHIQUE(num_region),
CHECK(NOT(authorize_reduc = 'y' AND type_client = 'particulier')),
CHECK(NOT(authorize_reduc = 'n' AND type_client = 'professionnelle'))
);
CREATE TABLE RESERVER(
id_client char(4) REFERENCES CLIENT(id_client),
id_reservation char(4) REFERENCES RESERVATION(id_reservation)
);
CREATE TABLE LOUER(
id_client char(4) REFERENCES CLIENT(id_client),
id_location char(4) REFERENCES LOCATION(id_location)
);
CREATE TABLE RETOUR_L (
date_retour date NOT NULL,
etat_produit char(4),
etat_produit char(4) NOT NULL CHECK(etat_produit IN ('E001', 'E002', 'E003')),
id_location char(4) REFERENCES LOCATION(id_location),
id_client char(4) REFERENCES CLIENT(id_client)
);

Loading…
Cancel
Save