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