Count group à partir de plusieurs champs

rduvrac Messages postés 120 Date d'inscription vendredi 7 février 2003 Statut Membre Dernière intervention 2 novembre 2009 - 5 avril 2008 à 12:19
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 5 avril 2008 à 18:29
Bonjour,


admettons une table qui contient les enregistrements suivant:


• OBJET • THEME1 • THEME2 • THEME3

- objet1 - Alimentaire - Tous - Tous

- objet2 - Cadeaux - Tous - Tous

- objet3 - Mode - Tous - Tous

- objet4 - Cadeaux - Alimentaire - Tous

- objet5 - Maison - Sport - Tous


Il y a donc :

- 2 Alimentaire

- 2 Cadeaux

- 1 Maison

- 1 Mode

- 1 Sport

- 5 Tous


Je souhaite donc faire afficher en "distinct" ces enregistrements par ordre alphabétique et en analysant les THEMES 1,2,et3.

J'utilise "Tous" par défaut, c'est pour ça qu'il est présent partout et parfois 2 fois lorsque l'objet ne rentre que dans un theme.


Actuellement j'ai :

SELECT theme, count( * )

FROM codes_reductions

GROUP BY theme

ORDER BY theme ASC


Mais ça me donne :

- 1 Alimentaire

- 2 Cadeaux

- 1 Maison

- 1 Mode

- 5 Tous


ça compte donc 1 seul Alimentaire et ne compte pas le Sport. Normal vu le code mais comment lui dire de chercher dan les THEME1 et THEME2 aussi ?


Je m'en sort pas vraiment, si vous pouviez m'aider...


Merci d'avance à tous!

1 réponse

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
5 avril 2008 à 18:29
Hello,

alors déjà, dans un tel cas, on sort les thèmes de la table de base.
Une table objets, avec un objet_id, objet_nom, etc...
Une table thèmes avec un theme_id, theme_nom...
Une table de jointure avec objet_id, theme_id.
Apres,
select
    count(lnk.*), th.theme_nom
from
    lnk_objet_theme lnk
    inner join themes th on th.theme_id = lnk.theme_id
0