Informasjon

Forfatter(e) Quentin Cappart
Frist Ingen frist
Innleveringsgrense Ingen begrensning

Logg inn

Ecriture de requêtes SQL (jointures avancées)

Ecrivez une requête SQL pour obtenir les informations suivantes. Par défaut, et sauf si c'est explicitement demandé, considérez que l'on garde les doublons (ne mettez pas distinct dans vos select.)

Vous pouvez également supposer qu'il n'y a pas de valeurs manquantes (pas de NULL) pour cette question.

Vous pouvez utiliser la jointure qui vous semble la plus pertinente mais vous ne pouvez pas faire un simple produit filtré ensuite avec le where.

Attention, vos requêtes doivent être parfaitement conformes et compiler.

Pour cette question, on considère les deux vues suivantes:

create view cs_students as -- Etudiants du département 'Comp. Sci.'
select *
from student
where dept_name = 'Comp. Sci.';
create view music_dept as -- Uniquement le département 'Music'
select *
from department
where dept_name = 'Music';

Spørsmål 1:

Afficher les attributs student.ID, student.name, advisor.i_ID pour les étudiants ayant un superviseur (relation advisor).

Spørsmål 2:

Afficher les attributs student.name renommé en student_name et instructor.name renommé en instructor_name pour chaque étudiant et son superviseur.

Spørsmål 3:

Afficher les attributs course_id, title, sec_id, semester, year pour toutes les sections de cours.

Spørsmål 4:

Afficher les attributs prereq.course_id, prereq.prereq_id, course.title (titre du prérequis).

Spørsmål 5:

Afficher les attributs ID, course_id, sec_id, semester, year, building en joignant takes et section. Le lien se fait via la clef primaire de section.

Spørsmål 6:

En utilisant la vue cs_students, afficher les attributs cs_students.ID, cs_students.name, advisor.i_ID pour tous les étudiants en informatique, y compris ceux qui n’ont pas de superviseur (on complète les champs manquant par des null).

Spørsmål 7:

En utilisant la vue cs_students, afficher les attributs cs_students.ID, cs_students.name, instructor.name pour tous les étudiants en informatique, y compris ceux qui n’ont pas de superviseur (on complète les champs manquant par des null).

Spørsmål 8:

En utilisant la vue cs_students, afficher les attributs department.dept_name, cs_students.ID, cs_students.name pour tous les étudiants. Gardez tous les départements dans votre relation en sortie, on complète les champs manquants par des nulls.

Spørsmål 9:

En utilisant la vue math_dept, afficher les attributs math_dept.dept_name, math_dept.building, course.course_id, course.title pour le département Math, y compris s’il n’offre aucun cours. On complète les champs manquant par des null.

Spørsmål 10:

En utilisant la vue math_dept, afficher les attributs math_dept.dept_name, department.dept_name, department.building en faisant une jointure complète externe entre la vue math_dept et la relation department. (Note : à cause de la version trop ancienne de sqlite3 sur inginious, cette requête ne pourra pas etre éxecutée sur inginious, la vérification se fera sur la syntaxe. Vérifiez que vous utilisez bien les bons mot-clés notamment FULL OUTER JOIN)