IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

COUNT(*) sur une sous requete


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3
    Par défaut COUNT(*) sur une sous requete
    Bonjour,
    Je n'arrive pas à écrire une requete sql qui récupère le résultat d'une sous requête.

    Prenons par exemple les tables
    categories(id, c_nom)
    produit(id, idcategorie#, p_nom, prix)

    Je souhaite lister les catégories en ajoutant une colonne qui correspond au nombre de produits qui appartiennent à chaque catégorie.

    Pour obtenir par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IdCat  |  NomCategorie  |  NbProduit
    ------------------------------------
    1         Fromage                 5
    Quelle est la meilleure manière pour le faire ?


    Merci d'avance

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    Il faut faire une jointure externe.

    Qu'as-tu essayé comme requête ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Par défaut
    Bonjour,
    Jointure externe comme dit Cinephil pour avoir toutes les catégories y compris celles qui n'ont pas de produit et utilisation des mots clé group by et count :
    http://sqlpro.developpez.com/cours/sqlaz/ensembles/
    A+
    Soazig

  4. #4
    Membre éclairé Avatar de sofiane_bfm007
    Profil pro
    Consultant Décisionnel
    Inscrit en
    Mai 2008
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Consultant Décisionnel

    Informations forums :
    Inscription : Mai 2008
    Messages : 261
    Par défaut
    Bon je te propose 2 solution et cela selon tes besoin :
    Si tu veux retourner toutes les catégories même celle qui n'ont pas de produit alors tu as ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT 
         c.id as IdCat, c.c_nom as NomCategorie, (select COUNT(p.id) from produit p where p.idcategorie=c.id group by p.idcategorie) as NbProduit
      FROM produit p
    RIGHT OUTER JOIN categories c
    on p.idcategorie=c.id
    group by 
    c.id, c.c_nom
    si non si tu veux seulement les catégories qui possèdent au moins un produit, alors tu as ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT 
          p.idcategorie as IdCat, c.c_nom as NomCategorie, COUNT(p.id)as NbProduit
     
      FROM produit p, categories c
    where p.idcategorie=c.id
    group by p.idcategorie, 
    c.c_nom
    Pour les jointure externe j'ai utilisé un moteur de base de données Sql Server 2005

    J'espère je je répond bien a ton besoin !!!!
    Bon courage

Discussions similaires

  1. Filtrer sur le resultat d'une sous-requete
    Par MinsK dans le forum Requêtes
    Réponses: 7
    Dernier message: 26/11/2009, 16h45
  2. Question sur une sous requete
    Par Jean-Pierre49 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 19/03/2008, 12h19
  3. Somme et trie sur une sous requete
    Par shinrei dans le forum Langage SQL
    Réponses: 4
    Dernier message: 19/05/2006, 10h45
  4. Réponses: 15
    Dernier message: 14/04/2006, 15h34
  5. Réponses: 9
    Dernier message: 18/08/2005, 13h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo