bonjour,
deux tables de ma base de données
Table1
Table2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 +----+----------+------------+ | id | nom | note | +----+----------+------------+ | 1 | Bertrand | 17 | | 2 | Charles | 10 | | 3 | Alex | 12 | | 4 | David | 11 | | 5 | Eric | 20 | | 6 | François | 20 | | 7 | Gaston | 18 | | 8 | Henri | 20 | +----+----------+------------+
contient combien d'étudiants dans chaque groupe en fonction de leur nombre
Je veux diviser les étudiants en 3 groupes, et les étudiants avec les notes les plus élevées doivent aller dans le premier groupe, etc., et les étudiants ne doivent pas être répétés dans d'autres groupes. J'ai dans Table1.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 ------------------------------------------- Nombretudiant| group1 | group2 | group3 | ----------------------------------------- 1 | 1 | 0 | 0 | 2 | 2 | 0 | 0 | 3 | 2 | 1 | 0 | 4 | 2 | 2 | 0 | 5 | 2 | 2 | 1 | -----------------------------------------, puis je cherche dans la table2 la ligne où la colonne Nombretudiant =total de chaque groupe
Code : Sélectionner tout - Visualiser dans une fenêtre à part select count(id) from table1 as total
Par exemple, si j'ai 5 étudiants, je les divise en 3 groupes en fonction du nombre de Table2.
Tableau 2
J'ai 2 étudiants du groupe 1, 2 étudiants du groupe 2, 1 étudiant du groupe 3
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 NumberStudent| group1 | group2 | group3 | ----------------------------------------- 5 | 2 | 2 | 1 |
Le groupe 2 a 2 étudiants qui ne sont pas trouvés dans le groupe1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 select nom,note from Table1 where note >=10 order by note row //from table2 (comment puis-je obtenir le nombre de ROW = 2 comme paramètre )
Le groupe 3 a 1 étudiant qui ne sont pas trouvés dans le groupe1 et groupe2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 select nom,note from Table1 where note >=15 and id<> id // l'étudiant en groupe2 ne mentionne pas en groupe1 order by note row //from table2 (group2 pour 5 étudiants est 2, donc ROW = 2)
Le résultat devrait être
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 select nom,note from Table1 where note >17 and id<> id // l'étudiant en groupe2 ne mentionne pas dans groupe1 and groupe 2 order by note row //from table2 (group3 pour 5 étudiants est 1, donc ROW = 1)
ou il y a une autre méthode
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 1 Henri 20 group1 2 Eric 20 group1 3 François 20 group2 4 Gaston 18 group2 5 Bertrand 17 group3
Partager