Requête un peu trop compliquée pour moi...

ViPHP
ViPHP | 5924 Messages

03 sept. 2007, 17:45

Ok, merci :)

ViPHP
ViPHP | 5924 Messages

05 sept. 2007, 03:27

Je suis désolé, je n'ai pas pu tester avant, j'ai eu des soucis avec PHP (la distribution que j'ai récupéré supporte apparement mal mysql :shock: et je n'ai pas le temps de le recompiler pour l'instant :) ).
Bref, j'ai donc fait ça à l'ancienne, en ligne de commande, et ça marche parfaitement bien :

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)
(Attention tout de même, la ligne de commande supportait mal les accent, j'ai dû renommer le 'é' de "école")

J'ai rajouté les LEFT JOIN et les IFNULL pour afficher correctement les 0 (Tous les élèves ne sèchent pas les cours quand même :D ). Je pense que c'est le résultat attendu. Si cela ne marche toujours pas, il faudra me donner la version de ton serveur.

Au fait, bonne rentrée :) (Pas de chance, moi je suis encore en vacances :mrgreen: )