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

SQL Oracle Discussion :

Modifier requête catégorie de produit


Sujet :

SQL Oracle

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Points : 0
    Points
    0
    Par défaut Modifier requête catégorie de produit
    Je dois modifier la requête ci contre pour lister le nombre de produits(product)
    disponibles par catégorie de produits(product_category).
    Les conditions sont:

    on ne listera pas les catégories de produits ne contenant pas de produit

    N'afficher que les colonnes CATEGORY_NAME(product_category.name) et PRODUCT_COUNT
    dans cet ordre.

    Le code est le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select * 
    from product
    Moi j'ai proposé la solution:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select product_category.name AS CATEGORY_NAME,count(product) AS PRODUCT_COUNT
    from product
    group by product_category;
    La condition"on ne listera pas les catégories de produits ne contenant pas de produit",je ne sais pas
    comment la traduire en SQL.
    Avez vous une idée svp?

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 138
    Points : 1 918
    Points
    1 918
    Par défaut
    Dans ton autre sujet je t'ai dit qu'il fallait utiliser la clause HAVING pour filtrer des agrégats:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select product_category.name AS CATEGORY_NAME,count(product) AS PRODUCT_COUNT
    from product
    group by product_category
    having count(product) > 0;

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Points : 0
    Points
    0
    Par défaut re
    D'accord merci

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    À moins que la table soit en JSON ou quelque chose du genre, je ne vois pas ces requêtes fonctionner : pas à cause du having, à cause du product_category.name.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Points : 0
    Points
    0
    Par défaut Re
    et pourquoi la table ne fonctionnerait pas?
    voici la table en schéma en pièces jointes
    table.docx
    dans le champ PRODUCT_Category,vous trouverez l'attribut name.

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Parce que votre FROM ne couvre que la table product, pas product_category.
    Celle-ci devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      select pca.name as category_name
           , count(*) as product_count
        from product          prd
        join product_category pca on pca.product_category_id = prd.product_category_id
    group by pca.name;

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Points : 0
    Points
    0
    Par défaut Re
    Ah oui j'avais pas pensé à ça, merci

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Points : 0
    Points
    0
    Par défaut Re
    Mais je ne comprend pas pourquoi pour le FROM , vous faites une
    jointure entre la table PRODUCT et la table PRODUCT_CATEGORY,
    la jointure vous la faite sur l'attribut product_category_id,
    Pourquoi svp?

  9. #9
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Peut-être cet extrait de ce que vous avez envoyé dans le document Word pourrait vous aider :
    Nom : 2020-10-08_19h22_38.png
Affichages : 1813
Taille : 31,1 Ko

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Points : 0
    Points
    0
    Par défaut Re
    Oui je comprends,il y'a une jointure entre les 2,on fait la jointure parce qu'il y'a une flêche
    qui lie les 2 tables?c'est la flêche qui est l'indice,mais est ce que le sens de la flêche compte?
    la flêche indique que la clé étrangère(product_category_id) de la table product est la clé primaire
    de la table product_category.
    Mais est ce que le sens de la flêche compte?si c'était dans le sens opposé qu'est ce qui se serait passer?
    le code final est (j'ai ajouté le having):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select pca.name as category_name
           , count(*) as product_count
        from product     as     prd
        join product_category pca on pca.product_category_id = prd.product_category_id
    group by pca.name
    having count(*) >0;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MCD] Multiples catégories de produits
    Par BLJ.CHAUVIN dans le forum Schéma
    Réponses: 3
    Dernier message: 04/12/2009, 03h42
  2. Relation catégorie et produit
    Par LhIaScZkTer dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 26/01/2009, 12h48
  3. Modifier requête sur clic bouton
    Par maxime350 dans le forum VBA Access
    Réponses: 2
    Dernier message: 09/04/2008, 15h59
  4. Modifier requête d'un RECORD_GROUP
    Par macben dans le forum Forms
    Réponses: 2
    Dernier message: 13/06/2007, 10h15
  5. Modifier requête avec l'objet DAO
    Par vuong1 dans le forum VBA Access
    Réponses: 7
    Dernier message: 07/08/2006, 21h25

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