Bonjour à tous !
J'ai un souci sur lequel je bloque depuis 24 heures. J'ai tout essayé, la recherche sur ce forum (qui m'a d'ailleurs donné quelques pistes), la recherche sur google, sur d'autres sites d'aide... Et je n'ai toujours pas trouvé la solution.
Voilà mon problème:
J'ai une table 'produit' qui répertorie des pédales d'effets pour guitaristes avec différentes caractéristiques. L'une des colonnes s'appelle 'id_sous_categorie' et fait référence à la table 'sous_categorie' qui contient toutes les sous-catégories possibles d'effets (ex: distorsion, phaser, flanger...)
Je crée une page catalogue où on pourra explorer tous les produits à partir de liens.
Je ne veux pas afficher toutes mes sous-catégories l'une apres l'autre, parce qu'il y en a trop. Donc je voudrais les regrouper. Par exemple: les distrosions, overdrive et fuzz ensemble:
Distorsion / Overdrive / Fuzz ( $nbre de produit)
et entre parenthese je veux afficher le nombre de produits que contient cet ensemble qui regroupe 3 sous-catégories.
(je remercie ceux qui ont eu le courage et la patience de lire jusqu'ici )
Maintenant, j'en viens à la requete que je dois faire pour obtenir ça ! Et là, je suis complètement bloqué.
La seule solution que j'ai pour l'instant, en attendant mieux, c'est de faire une requete avec COUNT(*) pour compter le nombre de produit qu'il y a dans chaque ensemble. J'ai 5 ensembles et donc 5 requetes du type:
SELECT COUNT(*) FROM produit WHERE sous_categorie in('distorsion','overdrive',fuzz')
Ca me donne le nombre de produit que contient cet ensemble de 3 sous-catégories.
Et je recommence la requete pour le 2ème ensemble qui comprend les chorus, compresseur et noise supressor...
J'ai tout exploré et essayé, mais je n'ai pas la solution ???
Je ne demande pas une réponse sous forme de code précis. Simplement j'aimerais comprendre le concept à utiliser pour m'en sortir dans ce cas en une seule requête, que ce soit avec GROUP BY, une requete imbriquée ou une jointure, qui sait ?
Merci d'avance...
Bon j'ai un peu plus de précision:
Donc je fait la requête suivante:
Puis je récupère le tout dans une boucle et affiche le résultat avec un print_r:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $requete = mysql_query (' SELECT id_ss_categorie, COUNT(*) AS sous_categorie FROM produit GROUP BY id_ss_categorie ');
La boucle:
Ca m'affiche:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 while ($resultat = mysql_fetch_array($requete)) { print_r($resultat); echo '<br />'; }
Donc là je sais que j'ai 4 produits de la sous-catégorie 2, 1 produit de la sous-catégorie 5, 1 produit de la sous-catégorie 6...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Array ( [0] => 2 [id_ss_categorie] => 2 [1] => 4 [sous_categorie] => 4 ) Array ( [0] => 5 [id_ss_categorie] => 5 [1] => 1 [sous_categorie] => 1 ) Array ( [0] => 6 [id_ss_categorie] => 6 [1] => 1 [sous_categorie] => 1 ) Array ( [0] => 7 [id_ss_categorie] => 7 [1] => 1 [sous_categorie] => 1 ) Array ( [0] => 8 [id_ss_categorie] => 8 [1] => 1 [sous_categorie] => 1 ) Array ( [0] => 11 [id_ss_categorie] => 11 [1] => 1 [sous_categorie] => 1 )
Mais voilà, mon souci, c'est que je veux regrouper certaines sous-catégories en ensemble de sous-catégories et compter le nombre de produits qu'il y a dans chaque ensemble de sous-catégories.
Par exemple, je veux compter tous les produits de l'ensemble qui regroupe les sous-catégories 1, 2, 3 et 4. Ce qui dans mon exemple me donne 4 produits. Puis compter les produits présents dans l'ensemble de sous-catégories 5, 6 et 7...
Et tout ça je veux le faire en une seule requete et une boucle.
Pour m'éviter de faire ça:
Et répéter cette requête pour avoir le nombre de produits présents dans les autres ensembles de sous-catégories.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $requete = mysql_query (' SELECT COUNT(*) FROM produit WHERE id_ss_categorie IN (1, 2, 3, 4) ')
Je ne sais pas si j'ai été clair, mais voilà le problème où je bloque o_O
Partager