Exercices JOIN#
Si vous ne l'avez pas déjà, téléchargez la base de données d'une université et ouvrez la avec DB Browser for SQLite. En utilisant des requêtes SELECT ... FROM ... JOIN ... WHERE ... répondez aux questions suivantes.
A quels cours est inscrit l’élève dont le nom commence par « Denys » ?
Quel est le cours du département numéro « 2 » qui commence à 9h00 ? (Donnenz un résultat correct s'il existe plusieurs possibilités.)
Quel est le nom du directeur de la faculté (FNAME) à laquelle appartient le cours « Engineering drawing » ?
Combien d’élèves distincts sont inscrits dans un cours qui a lieu en salle R403, vous devriez commencer par select count(distinct snum)...?
Combien d’élèves distincts qui ont cours en salle R403 sont en année « FR » ?
Quel est le nom du directeur de faculté, du cours auquel 'Feng' est inscrit ?
Solution
1--1
2select cname from enrolled
3join student on enrolled.snum = student.SNUM
4where sname like 'Denys%';
5--Electromagnetism and electronics
6--sans JOIN
7select snum from student
8where sname like 'Denys%';
9--1113
10select cname from enrolled
11where snum = 1113;
12--ou avec requêtes imbriquées
13select cname from enrolled
14where snum in (select snum from student
15where sname like 'Denys%');
16
17--2
18select cname from course
19join faculty on course.fid = faculty.FID
20where deptid = 2 and MEETS_AT = '09:00:00';
21--Physical chemistry
22--Medicinal chemistry
23
24--3
25select FNAME from faculty
26join course on course.fid = faculty.FID
27where cname = "Engineering drawing";
28
29--4
30select count(distinct snum) from enrolled
31join course on course.cname = enrolled.CNAME
32where room = 'R403';
33--133
34
35--5
36select count(distinct enrolled.snum) from enrolled
37join course on course.cname = enrolled.CNAME
38join student on enrolled.snum = student.SNUM
39where room = 'R403'
40and student.year ='FR';
41--28
42
43--6
44select fname from faculty
45join course on course.fid = faculty.FID
46join enrolled on course.cname = enrolled.CNAME
47join student on enrolled.SNUM = student.SNUM
48where student.SNAME like '%Feng%';
49--Aleksandrov Nemeth
Pour plus d'exercices, vous pouvez consulter la page de mon collègue : Maxime Jan Joindre plusieurs tables, Exercices de Maxime Jan. (Notez qu'il s'agit d'un site web différent, commençant par « janm », donc une fois que vous avez terminé les exercices qui s'y trouvent, retournez sur le site commençant par « enci »).