J'explique ce que je veut obtenir et la forme de mes tables.
Je souhaite faire ce principe :

C'est d'ailleurs déjà en place, mais je pense que je peux l'optimisé coté requetes..
Actuellement, j'ai 5 tables : categories, ss_categories, marques, modeles et annonces
annonces a un id parent de modeles
modeles -> marques
marques -> ss_cat
ss_cat -> cat
pour recuperer le nbre d'annonces pour les cats, je fais ca
Code : Tout sélectionner
SELECT cat.id AS id,cat.nom AS nom,COUNT(a.id) AS nbre_annonce FROM categories cat
LEFT JOIN ss_categories ss_cat ON categorie_id = cat.id
LEFT JOIN marques m ON ss_categorie_id = ss_cat.id
LEFT JOIN modeles mo ON marque_id = m.id
LEFT JOIN annonces a ON modele_id = mo.id
GROUP BY cat.id
ORDER BY cat.id ASCET c'est la que l'on m'a proposé une idée, je sais pas ce qu'elle vaut mais je l'a trouve pas idiote.
Faire le principe d'une pyramide, calculer a l'envers le nbre d'annonces de chaque modeles, et ensuite, faire des additions par PHP pour remonter le chiffre jusqu'aux cats.
Est ce mieux ? si oui, je n'ai aucune idée de la marche ç suivre et a prendre pour pondre ce genre d'algo.
Merci d'avance.