Bonjour,
J'ai une petite requête à faire qui me casse un peu la tête depuis quelques temps.
En résumé : Il y a des classes, dans ces classes il y a des élèves, et ces élèves ont fait des devoirs qui ont une note.
Ce qui est traduit par :
J'aimerai faire une requête qui me renvoie la liste des élèves avec la note minimale de la classe et l'idDevoir de ce devoir.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 CREATE TABLE CLASSE( idClasse INTEGER ); CREATE TABLE ELEVE( idEleve INTEGER, idClasse INTEGER ); CREATE TABLE DEVOIR( idDevoir INTEGER, idEleve INTEGER, note INTEGER );
MAIS : dans le calcul du minimum, on ne doit pas tenir compte des 0 sauf si tous les devoirs de la classe ont pour note 0.
Autrement dit, avec ceci :
on devrait avoir ça (dans l'idéal):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 INSERT INTO CLASSE(idClasse) VALUES (1); INSERT INTO CLASSE (idClasse) VALUES (2); INSERT INTO CLASSE (idClasse) VALUES (3); INSERT INTO ELEVE(idEleve, idClasse) VALUES (1,1); INSERT INTO ELEVE(idEleve, idClasse) VALUES (2,1); INSERT INTO ELEVE(idEleve, idClasse) VALUES (3,2); INSERT INTO ELEVE(idEleve, idClasse) VALUES (4,2); INSERT INTO ELEVE(idEleve, idClasse) VALUES (5,3); INSERT INTO DEVOIR(idDevoir, idEleve, note) VALUES (1,1,10); INSERT INTO DEVOIR(idDevoir, idEleve, note) VALUES (2,1,12); INSERT INTO DEVOIR(idDevoir, idEleve, note) VALUES (3,2,5); INSERT INTO DEVOIR(idDevoir, idEleve, note) VALUES (4,2,0); INSERT INTO DEVOIR(idDevoir, idEleve, note) VALUES (5,3,0); INSERT INTO DEVOIR(idDevoir, idEleve, note) VALUES (6,3,0); INSERT INTO DEVOIR(idDevoir, idEleve, note) VALUES (7,4,0); INSERT INTO DEVOIR(idDevoir, idEleve, note) VALUES (8,4,0);
Ca ce serait l'idéal : quand plusieurs devoir correspondent avec la note minimale qu'on retourne, l'idDevoir est celui du premier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 -- Le résultat attendu : idEleve note idDevoir --------------------- 1 5 3 2 5 3 3 0 5 4 0 5 5 null null
Bon, je ne crois pas que ce soit possible.
Sinon, un autre résultat acceptable serait de renvoyer autant de ligne qu'il y a de devoirs correspondants :
J'espère que quelqu'un aura une idée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 -- Le résultat attendu : idEleve note idDevoir --------------------- 1 5 3 2 5 3 3 0 5 3 0 6 3 0 7 3 0 8 4 0 5 4 0 6 4 0 7 4 0 8 5 null null
Merci d'avance.
Si ce n'est pas clair, je peux apporter des précisions.
Partager