Requête

Résolu/Fermé
kossinus Messages postés 8 Date d'inscription lundi 3 juin 2013 Statut Membre Dernière intervention 28 novembre 2013 - 27 nov. 2013 à 18:48
kossinus Messages postés 8 Date d'inscription lundi 3 juin 2013 Statut Membre Dernière intervention 28 novembre 2013 - 28 nov. 2013 à 09:28
Bonjour à tous.
J'ai une table dans Mysql comme suit:

id nomEtudiant statutDevoir

1 Toto ok
2 Tata pas_ok
3 Toto pas_ok
4 Titi ok
5 Titi ok
6 Titi pas_ok

Je veux faire une requête pour avoir un résultat du genre:

nomEtudiant statutDevoir_ok statutDevoir_non

Toto 1 1
Tata 0 1
Titi 2 1

Où statutDevoir_ok est le cumul de ok du statutDevoir d'étudiant et statutDevoir_non est le cumul de pas_ok.

J'ai fais une requête de cette forme:

SELECT nomEtudiant , statutDevoir , COUNT( * ) as nb
FROM maTable
GROUP BY nomEtudiant , statutDevoir

Cette requête me donne:
nomEtudiant statutDevoir nb

Toto ok 1
Toto pas_ok 1
Tata ok 0
Tata pas_ok 1
Titi ok 2
Titi pas_ok 1

Cette requête, même si elle me donne les bonnes informations, ne me donne pas le format demandé que je veux exploiter dans un code php.

J'aimerais savoir s'il est d'abord possible d'avoir le résultat que je cherche et si oui, un coup de main pour l'avoir serait beaucoup salutaire.
merci.

1 réponse

Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
Modifié par Reivax962 le 27/11/2013 à 19:02
Bonjour,

Essaie quelque chose de ce genre :
SELECT nomEtudiant, 
  SUM(CASE WHEN statutDevoir = 'ok' then 1 else 0 end) as statutDevoir_ok,
  SUM(CASE WHEN statutDevoir = 'pas_ok' then 1 else 0 end) as statutDevoir_non
FROM maTable
GROUP BY nomEtudiant


Xavier
0
kossinus Messages postés 8 Date d'inscription lundi 3 juin 2013 Statut Membre Dernière intervention 28 novembre 2013
28 nov. 2013 à 09:28
Wahou Xavier!!!! Impeccable!!!

ça marche à merveille!!! Merci beaucoup Xavier!
0