Appliquer la notion
Soit le schéma relationnel :
1
Employe (#Num, Nom, Prenom, Age, Salaire, Fonction=>Fonction, Societe=>Societe)
2
Fonction (#Intitule, SalaireMin, SalaireMax, NbHeures)
3
Societe (#Nom, Pays, Activite)
On crée les tables associées et leurs enregistrements.
1
CREATE TABLE societe(
2
nom VARCHAR(50),
3
pays VARCHAR(50),
4
activite VARCHAR(50),
5
PRIMARY KEY (nom)
6
);
7
8
9
CREATE TABLE employe(
10
num INTEGER,
11
nom VARCHAR(50),
12
prenom VARCHAR(50),
13
age INTEGER,
14
salaire REAL,
15
societe VARCHAR(50),
16
PRIMARY KEY (num),
17
FOREIGN KEY (societe) REFERENCES societe(nom)
18
);
19
20
21
INSERT INTO societe (nom, pays, activite)
22
VALUES ('Pied Piper', 'USA', 'Éditeur Logiciel');
23
24
INSERT INTO societe (nom, pays, activite)
25
VALUES ('LeapMusic', 'France', 'Éditeur Logiciel');
26
27
INSERT INTO societe (nom, activite)
28
VALUES ('Aperture Science', 'Fabrication de rideaux de douche');
29
30
INSERT INTO societe(nom, pays)
31
VALUES ('Black Mesa', 'USA');
32
33
INSERT INTO employe (num, nom, prenom, age, salaire, societe)
34
VALUES(1, 'Hendricks', 'Richard', 28, 420000, 'Pied Piper');
35
INSERT INTO employe (num, nom, prenom, age, salaire, societe)
36
VALUES(2, 'Gilfoyle', 'Bertram', 29, 399666, 'Pied Piper');
37
INSERT INTO employe (num, nom, prenom, age, salaire, societe)
38
VALUES(3, 'Dunn', 'Donald "Jared"', 25, 120000, 'Pied Piper');
39
INSERT INTO employe (num, nom, prenom, age, salaire, societe)
40
VALUES(4, 'Hall', 'Monica', 27, 420000, 'Pied Piper');
41
42
INSERT INTO employe (num, nom, prenom, age, salaire, societe)
43
VALUES(5, 'Lake', 'Marty', 28, 420000, 'LeapMusic');
44
INSERT INTO employe (num, nom, prenom, age, salaire, societe)
45
VALUES(6, 'Gamesh', 'Jul', 18, 420000, 'LeapMusic');
46
INSERT INTO employe (num, nom, prenom, age, salaire, societe)
47
VALUES(7, 'Famous', 'PokeMe', 32, 820000, 'LeapMusic');
48
INSERT INTO employe (num, nom, prenom, age, salaire, societe)
49
VALUES(8, 'Jones', 'Eddy', 44, 420000, 'LeapMusic');
50
51
INSERT INTO employe (num, nom, prenom, age, salaire, societe)
52
VALUES(9, Null, 'Caroline', 28, 23000, 'Aperture Science');
53
INSERT INTO employe (num, nom, prenom, age, salaire, societe)
54
VALUES(10, 'Johnson', 'Cave', 56, 4444444, 'Aperture Science');
55
INSERT INTO employe (num, nom, prenom, age, salaire, societe)
56
VALUES(11, 'Rattmann', 'Doug', 45, 1337, 'Aperture Science');
57
58
INSERT INTO employe (num, nom, prenom, age, salaire, societe)
59
VALUES(12, Null, 'G-Man', 42, 72000, 'Black Mesa');
60
INSERT INTO employe (num, nom, prenom, age, salaire, societe)
61
VALUES(13, 'Freeman', 'Gordon', 34, 420000, 'Black Mesa');
62
Question
Écrire une requête SQL permettant de sélectionner les noms des employés avec le pays de leur entreprise.
Indice
On ne retournera pas les lignes correspondant à des employés qui n'ont pas de nom.
Solution
1
SELECT e.nom AS nom_employe, s.pays AS pays_societe
2
FROM employe e INNER JOIN societe s
3
ON e.societe=s.nom
4
WHERE e.nom IS NOT NULL;
On obtient le résultat suivant :
Nom_Employe | Pays_Societe |
---|---|
Hendricks | USA |
Gilfoyle | USA |
Dunn | USA |
Aperture Science | USA |
Lake | France |
Gamesh | France |
Famous | France |
Jones | France |
Johnson | |
Rattmann | |
Freeman | USA |
Question
Écrire une requête SQL permettant de sélectionner l'âge des employés de Black Mesa.
Solution
1
SELECT e.age AS nom_employe, s.nom AS nom_societe
2
FROM employe e INNER JOIN societe s
3
ON e.societe=s.nom
4
WHERE s.nom = 'Black Mesa';
On obtient le résultat suivant :
Age_Employe | Nom_Societe |
---|---|
42 | Black Mesa |
34 | Black Mesa |