Étant donné le schéma:MySQL: Liste des étudiants (SNAME) qui se sont inscrits dans plus de 6 (distincts) des classes dans un terme
Student(Snum, Sname)
Course(Cnum, Cname)
Prerequisite(Cnum, Prereq)
Professor(Pnum,Pname, Dept, Office)
Enrollment(Snum, Cnum, Term, Section, Mark)
Schedule(Cnum, Term, Section, Days, Time, Room)
Class(Cnum, Term, Section, Instructor)
Je suis venu avec:
SELECT * FROM Student s
HAVING MIN(
SELECT COUNT(*) FROM Enrollment e
WHERE e.Snum = s.Snum
GROUP BY e.Term
) > 6
Mais je suis obtenir:
/* Erreur SQL (1064): Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version serveur MySQL pour la bonne syntaxe à utiliser près de 'SELECT COUNT (*) FROM Inscription e OÙ e.Snum = s.Snum GROUP BY e.Term)>' à la ligne 3 */
Une idée de comment je peux résoudre ce problème? Merci!
En outre, il serait rassurant de savoir que j'ai la logique droite =)
EDIT: La réponse finale ...
SELECT Student.Sname
FROM(
SELECT COUNT(DISTINCT Cnum) as `classes`, e.Term as `term`, e.Snum as `student`
FROM Enrollment e
GROUP BY e.Term, e.Snum
) x
JOIN Student ON Student.Snum = `student`
WHERE x.`classes` > 6
après avoir ajouté «x» après le de, car il nécessite un alias, je reçois: "/ * Erreur SQL (1054): Colonne inconnue 's.Snum' dans 'where clause' */" – Garrett
Voir la réponse éditée. –
Merci! Edité un peu (comme enlever min et changer à où) ainsi que sélectionner le Sname à la fin pour ce dont j'avais besoin. Tu gères! – Garrett