Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Business Objects > Designer
Designer Forum d'entraide Designer (création d'univers, etc.)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/02/2011, 12h24   #1
Invité régulier
 
Inscription : février 2011
Messages : 14
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 14
Points : 6
Points : 6
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
nicolasline est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 13h28   #2
Responsable Business Intelligence
 
Avatar de TomDuBouchon
 
Homme Thomas Cochin
Consultant en Business Intelligence
Inscription : juin 2009
Messages : 3 271
Détails du profil
Informations personnelles :
Nom : Homme Thomas Cochin
Âge : 29
Localisation : France, Seine et Marne (Île de France)

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

Informations forums :
Inscription : juin 2009
Messages : 3 271
Points : 5 670
Points : 5 670
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
Vous souhaitez contribuer à la rubrique BI ? Contactez-moi ou un autre responsable de l'équipe BI par MP.
TomDuBouchon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 00h33   #3
Invité régulier
 
Inscription : février 2011
Messages : 14
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 14
Points : 6
Points : 6
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
nicolasline est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 09h48   #4
Responsable Business Intelligence
 
Avatar de TomDuBouchon
 
Homme Thomas Cochin
Consultant en Business Intelligence
Inscription : juin 2009
Messages : 3 271
Détails du profil
Informations personnelles :
Nom : Homme Thomas Cochin
Âge : 29
Localisation : France, Seine et Marne (Île de France)

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

Informations forums :
Inscription : juin 2009
Messages : 3 271
Points : 5 670
Points : 5 670
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
Vous souhaitez contribuer à la rubrique BI ? Contactez-moi ou un autre responsable de l'équipe BI par MP.
TomDuBouchon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 22h57   #5
Invité régulier
 
Inscription : février 2011
Messages : 14
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 14
Points : 6
Points : 6
Par défaut Having Count

Merci ,

je viens de découvrir les sous-requêtes et ta solution marche
nicolasline est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h49.


 
 
 
 
Partenaires

Hébergement Web