Compte tenu du schéma
CREATE TABLE School
(`School_ID` int, `School_Name` varchar(7))
;
INSERT INTO School
(`School_ID`, `School_Name`)
VALUES
(1, 'SchoolA'),
(2, 'SchoolB'),
(3, 'SchoolC')
;
CREATE TABLE Student
(`Student_id` int, `School_ID` int, `Student_Name` varchar(4))
;
INSERT INTO Student
(`Student_id`, `School_ID`, `Student_Name`)
VALUES
(1, 1, 'John'),
(2, 1, 'Alex'),
(3, 2, 'Lex')
;
CREATE TABLE Course
(`Course_ID` int, `Course_Name` varchar(9))
;
INSERT INTO Course
(`Course_ID`, `Course_Name`)
VALUES
(1, 'Math'),
(2, 'Science'),
(3, 'Chemistry'),
(4, 'Physics'),
(5, 'History')
;
CREATE TABLE Course_Student
(`Course_ID` int, `Student_ID` int)
;
INSERT INTO Course_Student
(`Course_ID`, `Student_ID`)
VALUES
(1, 1),
(2, 1),
(3, 1),
(1, 2),
(1, 3),
(2, 3),
(4, 2),
(5, 2)
;
Le résultat attendu du schéma ci-dessus sera SchoolA
parce qu'elle est la seule école qui a tous les étudiants qui sont inscrits sur atleast trois cours.
SELECT SCHOOL_ID, School_Name
FROM
(
SELECT d.SCHOOL_ID, e.School_Name,e.NoOfStudents
FROM
(
SELECT a.Student_ID, a.school_ID
FROM Student a
INNER JOIN Course_Student c
ON c.Student_ID = a.Student_ID
INNER JOIN Course d
ON c.Course_ID = d.Course_ID
GROUP BY a.Student_ID, a.school_ID
HAVING COUNT(*) >= 3
) d INNER JOIN
(
SELECT b.School_ID, b.School_Name, COUNT(*) NoOfStudents
FROM Student a
INNER JOIN School b
ON a.School_ID = b.School_ID
GROUP BY b.School_ID, b.School_Name
) e ON e.School_ID = d.School_ID
GROUP BY d.SCHOOL_ID
HAVING COUNT(*) = e.NoOfStudents
) s
** S'il vous plaît d'abord nous montrer vos efforts! ** [Qu'avez-vous essayé?] (Http://www.whathaveyoutried.com) –
Est-ce que ce sont des devoirs? – danihp
Oh non non ... c'est juste une partie de très grosse requête (je travaille sur d'autres parties: views, triggers et storedProcedure) .Il est urgent de demander de l'aide à mes camarades de stackoverflow :) .... J'ai changé le nom des entités et leurs clés pour le rendre facilement compréhensible (je pense à cause des noms d'entité u ppl pense que c'est un devoir) –