Comment passer ROW comme paramètre ?
bonjour,
deux tables de ma base de données
Table1
Code:
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 |
+----+----------+------------+ |
Table2
contient combien d'étudiants dans chaque groupe en fonction de leur nombre
Code:
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 |
----------------------------------------- |
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:
select count(id) from table1 as total
, puis je cherche dans la table2 la ligne où la colonne Nombretudiant =total de chaque groupe
Par exemple, si j'ai 5 étudiants, je les divise en 3 groupes en fonction du nombre de Table2.
Tableau 2
Code:
1 2 3
| NumberStudent| group1 | group2 | group3 |
-----------------------------------------
5 | 2 | 2 | 1 | |
J'ai 2 étudiants du groupe 1, 2 étudiants du groupe 2, 1 étudiant du groupe 3
Code:
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 2 a 2 étudiants qui ne sont pas trouvés dans le groupe1
Code:
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 groupe 3 a 1 étudiant qui ne sont pas trouvés dans le groupe1 et groupe2
Code:
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) |
Le résultat devrait être
Code:
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 |
ou il y a une autre méthode