bonjour,

deux tables de ma base de données

Table1

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         | 
+----+----------+------------+
Table2
contient combien d'étudiants dans chaque groupe en fonction de leur nombre
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    |
 -----------------------------------------
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
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : 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 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 >=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 : 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)
Le résultat devrait être
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
ou il y a une autre méthode