Count group à partir de plusieurs champs

Signaler
Messages postés
120
Date d'inscription
vendredi 7 février 2003
Statut
Membre
Dernière intervention
2 novembre 2009
-
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
-
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

Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
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