patricia.b Posté 16 Novembre 2008 Partager Posté 16 Novembre 2008 Bonjour, Cela fait plusieurs jours que j'essaie de trouver la bonne requête à faire (qui est certainement très simple), et je me décide à solliciter votre aide. J'ai, d'une part, la table "sbbsouscat" (sous-catégories) qui contient, entre autres : - id - nom ... et, d'autre part, la table "sbbproduit" (produits) qui contient, entre autres : - id - sid (= id table sbbsouscat) - libelle ... Je voudrais afficher une liste des sous-catégories, avec, pour chacune d'elles, entre parenthèses, le nombre de produits qu'elle comprend. Ce qui devrait donner, par exemple : Produits de senteur (14) Pigments (10) etc Je sais faire la requête pour extraire, lister et afficher les sous-catégories de la table "sbbsouscat" seules, mais je ne sais pas la requête à faire pour que la liste des sous-catégories et le nombre de produits extrait de la table "sbbproduit" se retrouvent l'un après l'autre, sur la même ligne. Merci par avance de votre coup de main. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Kioob Posté 16 Novembre 2008 Partager Posté 16 Novembre 2008 Bonjour, regarde du coté de l'instruction GROUP BY, qui devrait répondre à ton problème. Lien vers le commentaire Partager sur d’autres sites More sharing options...
patricia.b Posté 16 Novembre 2008 Auteur Partager Posté 16 Novembre 2008 Merci de cette réponse. Mais, du fait que j'ai des infos à prendre sur deux tables : - le nom des sous-catégories dans la table "sbbsouscat" - et le nombre de produits par sous-catégories dans la table "sbbproduit" je suppose qu'il doit aussi falloir faire une jointure entre les tables, et là, c'est pas encore vraiment "mon truc"... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Kioob Posté 16 Novembre 2008 Partager Posté 16 Novembre 2008 Oui il faut bien sûr faire une jointure entre les deux tables, mais je ne te donnerai pas la réponse "pré-machée" Lien vers le commentaire Partager sur d’autres sites More sharing options...
patricia.b Posté 16 Novembre 2008 Auteur Partager Posté 16 Novembre 2008 Dans un sens, je comprends, mais dans un autre, c'est dommage, car une réponse avec les commentaires qui vont avec m'auraient permis d'apprendre... ce que je n'ai pas réussi à faire en lisant le manuel mysql.... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Portekoi Posté 17 Novembre 2008 Partager Posté 17 Novembre 2008 Bonjour, Essaies avec ceci : Select a.nom, count(b.id) from sbbsouscat a inner join sbbproduit b on a.id = b.sidgroup by a.nom Group by te permet de regrouper un champ qui n'est pas contenu dans une fonction d'agrégation (cout, sum, avg etc.) Portekoi Lien vers le commentaire Partager sur d’autres sites More sharing options...
patricia.b Posté 17 Novembre 2008 Auteur Partager Posté 17 Novembre 2008 Bonsoir, Merci pour cette requête et son commentaire. Après 4 heures de tâtonnements, j'avais abouti, la nuit dernière, à ceci (qui fonctionne mais est plus long) : $sql = 'SELECT nom, COUNT(libelle) AS nombre_produits FROM sbbsouscat LEFT JOIN sbbproduit ON sbbsouscat.id =sbbproduit.sid GROUP BY sbbsouscat.id'; Bonne fin de journée. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Portekoi Posté 18 Novembre 2008 Partager Posté 18 Novembre 2008 Left join ou Right join servent dans le cas ou une table n'a pas une relation "1 pour 1" ou "1 pour n". Cela signifierait pour toi que la table "sbbproduit " ne contient pas forcément un "sid" contenu dans la table "sbbsouscat" ce qui est peu probable Lien vers le commentaire Partager sur d’autres sites More sharing options...
patricia.b Posté 18 Novembre 2008 Auteur Partager Posté 18 Novembre 2008 Bonjour, Merci de cette précision. Dans les débuts du site (qui n'est pas encore en ligne), certaines sous-catégories n'auront pas encore de produits d'enregistrés et ma table sbbproduit contiendra des "sid" nuls. Donc, sans le faire volontairement, je pense avoir utilisé la bonne fonction... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant