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

Designer Discussion :

Utilisation de la clause SQL HAVING COUNT


Sujet :

Designer

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 14
    Points : 12
    Points
    12
    Par défaut Utilisation de la clause SQL HAVING COUNT
    Bonjour ,

    je crée des objets qui permettent de faire une requête du genre :

    SOCIÉTÉ , NO_COMMANDE , NOMBRE_DE_PRODUITS

    ce qui correspond à la création de deux objet (société et no_commande) plus l'indicateur avec la fonction cout()

    ce qui abouti à requête SQL suivante :

    SELECT CLIENTS.SOCIETE, COMMANDES.NO_COMMANDE, count(DETAILS_COMMANDES.REF_PRODUIT)

    FROM CLIENTS,COMMANDES, DETAILS_COMMANDES
    WHERE(DETAILS_COMMANDES.NO_COMMANDE=COMMANDES.NO_COMMANDE )
    AND ( COMMANDES.CODE_CLIENT=CLIENTS.CODE_CLIENT )
    GROUP BY CLIENTS.SOCIETE, COMMANDES.NO_COMMANDE

    jusque là tout va bien .

    garder seulement les commandes qui on un nombre de produits supérieur à la
    commande numéro X

    HAVING COUNT( REF_PRODUIT) >= ( SELECT COUNT( REF_PRODUIT)
    FROM COMMANDES NATURAL JOIN
    DETAILS_COMMANDES
    WHERE NO_COMMANDE = 10657);

    peut-on créer une conditions avec la clause HAVING .

    merci pour l'aide

  2. #2
    Rédacteur
    Avatar de TomDuBouchon
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2009
    Messages
    3 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 343
    Points : 5 848
    Points
    5 848
    Par défaut
    Bonjour,

    Le plus simple à mon sens est de le gérer directement dans la requête sous BO.

    Pour obtenir ce que tu souhaites :

    Requête 1 :
    Objets du résultat :
    <Société>, <No_Commande>, <Nb_produits>
    Conditions :
    <Nb_produits> > Sous-requête 1.1

    Sous-requête 1.1 :
    Objets du résultat :
    <Nb_produits>
    Conditions :
    <No_Commande> = 10657

    Je précise pour d'éventuels autres lecteurs que cette méthode pour générer une clause HAVING ne peut fonctionner que si <Nb_produits> est défini dans le designer avec une fonction d'agrégation. (ici count())
    Pensez à consulter les FAQs BI, les Tutoriels BI et à effectuer des Recherches.
    Un message vous a aidé ? Votez en cliquant sur
    Votre problème est résolu ? Merci de l'indiquer en cliquant sur le bouton

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 14
    Points : 12
    Points
    12
    Par défaut HAVING
    Bonjour ,

    je sais pas si j'ai bien compris et à moins qu'il ai une notion de sous-requete que je ne connais pas encore dans le designer , voila ce que j'ai fais

    creation d'un objet <Nombre de commande>
    Dans le SELECT : count(DETAILS_COMMANDES.REF_PRODUIT)

    Création dans un autre objet <Sous-requête 1.1>
    Dans le SELECT : @Select(Indicateurs\Nombre de produits)
    Dans le Where : DETAILS_COMMANDES.NO_COMMANDE = 10657

    Dans DESKI

    Dans la zone Objet du résultat :
    <SOCIETE> , <NO_COMMANDE> , <Nombre de commande>

    Dans la Zone Condition :
    Nombre de commande Supérieur à Sous-requête 1.1

    si c'est bien ça que tu explique la requête ne ramène aucun résultat
    et la requête SQL généré est différente de ma requête initial

  4. #4
    Rédacteur
    Avatar de TomDuBouchon
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2009
    Messages
    3 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 343
    Points : 5 848
    Points
    5 848
    Par défaut
    Non, ce n'était pas du tout ça en fait...

    Pour les objets dans le designer, il faut qu'ils soient définis de la façon suivante :
    • <Société> = CLIENTS.SOCIETE
    • <No_Commande> = COMMANDES.NO_COMMANDE
    • <Nb_Produits> = count(DETAILS_COMMANDES.REF_PRODUIT)

    Sans aucune condition dans les clauses WHERE (qu'il faut utiliser le moins possible dans tous les cas)

    Ensuite, tout se passe dans le reporter.

    Il faut créer une requête correspondant à la "requête 1" de mon exemple et, dans les conditions, après avoir placé l'objet ainsi que "supérieur à", il faut sélectionner "créer une sous-requête".
    Les éléments de cette dernière doivent correspondre à la "sous-requête 1.1" de mon exemple.
    Pensez à consulter les FAQs BI, les Tutoriels BI et à effectuer des Recherches.
    Un message vous a aidé ? Votez en cliquant sur
    Votre problème est résolu ? Merci de l'indiquer en cliquant sur le bouton

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 14
    Points : 12
    Points
    12
    Par défaut Having Count
    Merci ,

    je viens de découvrir les sous-requêtes et ta solution marche

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

Discussions similaires

  1. Problème requête SQL (HAVING COUNT / MAX)
    Par AuroreMu dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/11/2014, 17h24
  2. [Débutant] Utiliser des fonctions VB dans des clauses SQL
    Par noftal dans le forum VB.NET
    Réponses: 10
    Dernier message: 02/11/2013, 17h41
  3. Utilisation de la clause exists dans proc sql
    Par enicnath dans le forum SAS Base
    Réponses: 2
    Dernier message: 02/09/2013, 16h11
  4. Utilisation de la fonction sql count
    Par mechakou dans le forum Langage SQL
    Réponses: 7
    Dernier message: 30/08/2013, 17h30
  5. [Sql]Having Count ( Distinct )
    Par nuke_y dans le forum Oracle
    Réponses: 5
    Dernier message: 20/02/2006, 21h36

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