Code : Tout sélectionner
mysql> SELECT l.id_eleve, IFNULL(j1.retard, 0) AS retard, IFNULL(j2.exp, 0) AS expulsion, IFNULL(j3.quit,0) AS desertion FROM liste_eleves AS l
-> LEFT JOIN (SELECT id_eleve, COUNT(*) AS retard FROM rapports WHERE motif = "Retard" GROUP BY id_eleve, motif) AS j1 ON j1.id_eleve = l.id_eleve
-> LEFT JOIN (SELECT id_eleve, COUNT(*) AS exp FROM rapports WHERE motif = "Expulsion" GROUP BY id_eleve, motif) AS j2 ON j2.id_eleve = l.id_eleve
-> LEFT JOIN (SELECT id_eleve, COUNT(*) AS quit FROM rapports WHERE motif = "Quitter le terrain de l'ecole" GROUP BY id_eleve, motif) AS j3 ON j3.id_eleve = l.id_eleve
-> ORDER BY j3.quit DESC, j2.exp DESC, j1.retard DESC,l.id_eleve ASC;
+----------+--------+-----------+-----------+
| id_eleve | retard | expulsion | desertion |
+----------+--------+-----------+-----------+
| 1 | 1 | 0 | 2 |
| 2 | 0 | 1 | 1 |
| 3 | 1 | 2 | 0 |
| 4 | 1 | 1 | 0 |
+----------+--------+-----------+-----------+
4 rows in set (0.00 sec)