Bonjour,

Je vais essayer d'être le plus clair possible !
J'ai une table personne et pour chaque personne, j'ai un boulléen qui me dit si elle active ou nom.
Ensuite, j'ai une table événement. Pour chaque événement, j'ai un champ qui peut contenir moyen faible, moyen ou fort. Chaque événement est rattaché à une personne (il y a l'id de la personne dans la table événement).

Ce que je voudrais faire, c'est compter le nombre d'événement faible, moyen et fort pour chaque personne active.
exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
pers_id     evt_urgence            count(e.evt_id)
1                fort                         0
1                moyen                        5
1                faible                       2
2                fort                         1
2                moyen                        3
2                faible                       0
Actuellement, j'arrive à avoir un chiffrage quand il y a des événements présents mais je n'arrive pas à avoir les valeur nulles (les lignes avec des 0).
Je fais ça pour les avoir :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
select p.pers_id, decode(e.evt_urgence, 1, 'fort', 2, 'moyen', 3, 'faible'), count(e.evt_id)
        from evenement e
              left outer join personne p
                      on p.pers_id = e.pers_id
        where p.pers_actif = 1
        GROUP by p.pers, e.evt_urgence
        ORDER BY p.pers, e.evt_urgence asc
;
Avec pour résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
pers_id     evt_urgence            count(e.evt_id)
1                moyen                        5
1                faible                       2
2                fort                         1
2                moyen                        3
Je me doute que c'est en rapport avec une jointure mais je ne vois pas comment la faire autrement sans avoir des problèmes de group by

Quelqu'un peut-il m'aider ?

D'avance merci !