Bonjour à tous,
Je suis actuellement en licence informatique, mon prof de BDD aime me cassez la tête et nous venons en plus de commencer ORACLE que je connais mal puisque je n'ai pratiquer que du langage de base SQL. La consigne étant la suivante : Donnez la liste des clients qui sont allés dans toutes les stations.
Voici la BDD :
RAPPEL la consigne : Donnez la liste des clients qui sont allés dans toutes les stations.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 CREATE TABLE Station (nomStation VARCHAR2 (30), capacite NUMBER (10) NOT NULL, lieu VARCHAR2(30) NOT NULL, region VARCHAR2 (30), tarif NUMBER (10,2) DEFAULT 0, CONSTRAINT cle_station PRIMARY KEY (nomStation), CONSTRAINT cle_lieu_region UNIQUE (lieu, region), CONSTRAINT nom_region CHECK (region IN ('Ocean Indien', 'Antilles', 'Europe', 'Ameriques', 'Extreme Orient')) ); CREATE TABLE Activite (nomStation VARCHAR2 (30), libelle VARCHAR2(30), prix NUMBER (10,2) DEFAULT 0, PRIMARY KEY (nomStation, libelle), FOREIGN KEY (nomStation) REFERENCES Station ON DELETE CASCADE ); CREATE TABLE Client (id NUMBER (10), nom VARCHAR2(30) NOT NULL, prenom VARCHAR2 (30), ville VARCHAR2 (30) NOT NULL, region VARCHAR2(30), solde NUMBER (10,2) DEFAULT 0 NOT NULL, PRIMARY KEY (id) ); CREATE TABLE Sejour (id NUMBER (10), station VARCHAR2 (30), debut NUMBER (10), nbPlaces NUMBER (4) NOT NULL, PRIMARY KEY (id, station, debut), FOREIGN KEY (id) REFERENCES Client, FOREIGN KEY (station) REFERENCES Station ON DELETE CASCADE);
les insert de la table Sejour : ID étant l'id du client ////// station le nom de la station
J'ai exploré quelque pistes mais sans résultat probant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 insert into sejour (id, station, debut, nbPlaces) values (10, 'Passac', 1998-07-01, 2); insert into sejour (id, station, debut, nbPlaces) values (20, 'Santalba', 1998-08-03, 4); insert into sejour (id, station, debut, nbPlaces) values (20, 'Venusa', 1998-08-03, 6); insert into sejour (id, station, debut, nbPlaces) values (30, 'Farniente', 1999-06-24, 5); insert into sejour (id, station, debut, nbPlaces) values (30, 'Santalba', 1996-08-14, 5); insert into sejour (id, station, debut, nbPlaces) values (30, 'Passac', 1998-08-15, 3); insert into sejour (id, station, debut, nbPlaces) values (30, 'Venusa', 1998-08-03, 3);
RAPPEL DE LA CONSIGNE : Donnez la liste des clients qui sont allés dans toutes les stations. ( la bonne requête devrait nous afficher le nom du client possédant l'ID '30'.
Si quelqu'un pense avoir une idée quel soit théorique ou pratique je suis demandeur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 select nom , nomStation as toutesStation from client C, Station St, sejour S where C.id = S.id and S.station = toutesStation; select nom from client C, sejour S where C.id = S.id and (select count(distinct(station)) from sejour S, client C where S.id=C.id) = (select count(distinct(nomstation)) from station );
Toutes mes excuse si ce Post n'est pas au bon endroit.
Partager