Fonction récursive ? compter dans les catégories

XavBer83 Messages postés 3 Date d'inscription lundi 19 novembre 2007 Statut Membre Dernière intervention 20 novembre 2007 - 19 nov. 2007 à 23:33
XavBer83 Messages postés 3 Date d'inscription lundi 19 novembre 2007 Statut Membre Dernière intervention 20 novembre 2007 - 20 nov. 2007 à 09:53
Hello tous !


j'ai un petit soucis qui va vous faire sourire... mais pour moi c'est super compliqué, héhé !


Voila j'ai des catégories adr_categories : id - parent - nom

et j'ai des établissements adr_etablissements : id - categorie - ...


mon soucis c'est que le niveau de sous catégories est "illimité" avec
mon systeme.. vu qu'on peut construire une arborescence via les id et
les parents.


Maintenant j'aimerais pouvoir faire une requete mysql qui me permette
de compter pour chaque catégorie combien il y a d'établissements
directement dans la catégories (ca c pas un soucis) mais aussi dans ses
sous catégories (la je coince...). Le but étant de pouvoir afficher
entre parenthèse le nombre d'établissement disponibles et que si il n'y
a pas d'établissement... je n'affiche pas ma catégorie...


Est-ce que quelqu'un a une idée comment je peux faire ca ?

De la doc ? quelques choses pour que je puisse avancer sur mon petit projet :-) ?


Je vous remercie beaucoup d'avance pour votre aide


Xavier83

www.xavier.bertschy.name

4 réponses

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
20 nov. 2007 à 00:18
Salut,

Le plus simple est d'avoir deux champs dans ta table :
- id_categorie
- id_parent

L'id de la catégorie te permet de savoir dans quelle grande catégorie se situe un enregistrement.
L'id parent te permet de savoir quelle est la catégorie parente de l'enregistrement.

C'est plutôt facile à mettre en place, et pas facile de se tromper...
Quand tu insères une catégorie fille d'une autre, il te suffit de lui donner le même id_parent que sa mère. Sauf si la mère n'a pas de mère elle même, alors l'id parent est l'id de cet enregistrement. Euh... C'est clair... ?
0
XavBer83 Messages postés 3 Date d'inscription lundi 19 novembre 2007 Statut Membre Dernière intervention 20 novembre 2007
20 nov. 2007 à 01:45
Mais j'ai deja dans ma table catégorie ce deux champs : adr_categories : id - parent - nom
Moi je cherche maintenant a résolver ca en php pour afficher le nombre d'établissement il y a pas catégories pour avoir un affichage du type :

- restaurants (24)
    - asiatique (20)
    - fast food (4)

Tu vois mon soucis ?

Xavier83
0
lesdis Messages postés 403 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 7 août 2020
20 nov. 2007 à 09:38
Bonjour,

Si la colonne categorie de la table adr_etablissement correspond à l'id de la table adr_categorie tu peux resoudre ton probleme par cet ordre SQL :

SELECT COUNT(adr_etablissement.id),adr_categorie.nom FROM adr_etablissement,adr_categorie WHERE adr_etablissement.categorie = adr_categorie.id GROUP BY adr_categorie.id

Tu récupéreras pour chaque ligne le nom de la categorie et le nombre d'établissement correspondant.

Bonne Prog
0
XavBer83 Messages postés 3 Date d'inscription lundi 19 novembre 2007 Statut Membre Dernière intervention 20 novembre 2007
20 nov. 2007 à 09:53
Hello merci pr ta réponse.
Avec ton exemple je trouve le nombre d'établissement directement dans la catégorie.
Mais compte-il aussi dans les sous catégories ?

Car l'idee est que si dans restaurants, il doit afficher l'addition des etablissement directement dans restaurants, et dans les sous catégories , sous sous catégories, etc....

Xavier
0
Rejoignez-nous