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

Deski Discussion :

Affichage d'un champs d'une sous-requete


Sujet :

Deski

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 71
    Points : 49
    Points
    49
    Par défaut Affichage d'un champs d'une sous-requete
    Bonjour,

    J'aimerais savoir comment afficher le champs dans mon select d'une sous requete ?

    Select nom, prenom, salaire
    from table1
    where date=2009
    and salaire !=
    ( select salaire
    from table1
    where date=2008)

    Elle affiche les personnes dont le salaire est différent enter 2009 et 2008.
    Cependant j'aimerai voir ce changement :
    nom prenom Salaire2009 Salaire 2008

    quelqu'un aurait une idée ???

    Merci d'avance

  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
    Salut,

    Bon alors plusieurs problèmes...

    Déjà j'ai bien peur que ta requête de base soit fausse. Actuellement ta requête ramène les salaires de 2009 pour lesquels il n'y a eu aucun équivalent en 2008.
    Plus clairement, si une personne a un salaire de 1500 en 2009 et que qui que ce soit, lui ou un autre, a eu un salaire de 1500 en 2008, il ne sera pas ramené.
    Ta sous-requête ne prends pas en compte le nom de la personne (pas de nom et prenom dans la sous-requête) et donc compare à toutes les valeurs qu'il trouve.

    En gros, pour que la requête soit correcte, il faudrait que tu aies un code du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Select t1.nom, t1.prenom, t1.salaire
    from table1 t1
    where t1.date=2009
    and t1.salaire !=
    ( select t2.salaire
    from table1 t2
    where t2.date=2008
    and t2.nom = t1.nom
    and t2.prenom = t1.prenom)
    Or il ne me semble pas que tu puisses générer ce type de code dans le requêteur...

    La solution la plus simple consiste à créer deux requêtes :
    - 1 pour les salaires 2008
    - 1 pour les salaires 2009

    Ensuite, dans le cube, tu lies les dimensions nom et prénom.
    Tu affiches ensuite dans un seul et même tableau nom, prenom, salaire 2008 et salaire 2009.
    Il ne te reste plus qu'à créer une nouvelle colonne dans ton tableau avec la formule suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Si(<Salaire(Requête 1)>=<Salaire(Requête 2)>) Alors 0 Sinon 1
    Et ensuite filtrer les valeurs de cette colonne pour ne garder que les "1".
    Après rien ne t'empêche de supprimer cette colonne, mais surtout sans supprimer le filtre.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 71
    Points : 49
    Points
    49
    Par défaut
    Merci de ta réponse.

    La requête était un exemple

    Je débute avec ça donc désolée.

    Je voulais savoir comment on crée deux requêtes dans un document ?

  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
    Une fois que tu as créé ta première requête, places toi dans le bandeau de gauche (où apparaissent les objets de ta requête) fais un clic droit puis "créer un fournisseur de données", tu arriveras sur l'assistant création de requête.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 71
    Points : 49
    Points
    49
    Par défaut
    ah super merci je ne savais pas que l'on pouvait faire ça

    heu, quand tu dis
    Ensuite, dans le cube, tu lies les dimensions nom et prénom.
    Cube c'est quoi ? Ca se trouve où ?

  6. #6
    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
    En PJ un screenshot de l'icône correspondant ainsi que de la fenêtre qui va s'ouvrir quand tu cliqueras dessus.

    Le but est d'afficher les objets des requêtes, de sélectionner un objet et, dans la partie droite onglet "Définition" cliquer sur "Lier". De là, BO te demandera à quel objet il faut le lier, tu sélectionnes l'objet en question et tu fais OK.

    A partir de là, les deux objets seront synchronisés. (Une flèche apparaît sur les deux objets liés dans le cube, comme dans le screenshot)
    Images attachées Images attachées  

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 71
    Points : 49
    Points
    49
    Par défaut
    ah ok merci.
    Tu me dis des choses que je n'ai pas vu dans les docs

    Heu sinon le if que tu m'as proposé de faire ne marche pas car j'ai deux lignes pour chaque personne.

    Du type :

    Nom Prenom Salaire 2008 Salaire 2009
    tutu tutu 1000 1000
    tutu tutu 1200 1200

  8. #8
    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
    Normalement le fait qu'il y ait plusieurs lignes ne devrait pas poser de problème pour le SI(). Ca te retourne un message d'erreur ?

    Sinon, comment se fait-il que tu aies plusieurs lignes pour une même personne ? C'est le cas dans la base de données ? (Pour une même année j'entends)

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 71
    Points : 49
    Points
    49
    Par défaut
    Enfaite ce qui est bizarre c'est qu'il y a une ligne pour chaque salaire

    ca fait :
    Nom Prenom Salaire 2008 Salaire 2009
    tutu tutu 1000 1000
    tutu tutu 1200 1200

    Alors que ca devrait faire :
    Nom Prenom Salaire 2008 Salaire 2009
    tutu tutu 1000 1200
    tutu tutu 1000 1200

    Dans ma base de données j'ai une ligne par année.

  10. #10
    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
    OK, le problème doit alors se trouver au niveau des liaisons dans le cube justement.

    D'abord, dans tes deux requêtes, ramène uniquement nom, prénom et salaire (inutile de ramener la date en affichage)

    Ensuite, dans le cube, normalement tes objets nom et prenom doivent être des dimensions (cube bleu) et tes objets salaires des indicateurs (boule rose).
    Et tes dimensions, nom et prenom donc, doivent être liées comme précisé dans mon précédent message.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 71
    Points : 49
    Points
    49
    Par défaut
    Bon j'ai recréé un document pour être sur.

    Quand je lie le nom de ma requête 1 avec celle de ma requête 2 et que je veux faire la mm chose pour le prénom sur le nom il n'y a plus la flèche c'est normal ?

    Mes objets salaires ne sont toujours pas en rose avec une boule, même avec la liaison.

  12. #12
    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
    Les flèches n'apparaissent que si tu te places sur l'objet en question, donc si tu t'occupes de prenom, il est normal qu'elles soient "masquées" pour nom. Il te suffit de te replacer dessus pour vérifier que la liaison existe bien.

    Sinon, pour ce qui est des indicateurs (boules roses) ce format est défini dans l'univers au niveau de la définition de l'objet.
    Donc, pour résoudre le problème, assure toi que les objets salaire ne sont pas liés
    Ensuite, il faut que tu crées deux variables, une pour chaque objet salaire. (En passant par le menu "Données" puis "Variables" et "Ajouter")
    Dans l'onglet "Définition", tu leurs donnes un nom et tu choisis "Indicateur", et dans la formule contente toi de double-cliquer sur l'un des deux objets.

    Donc au final ça devrait te donner :
    Variable 1:
    Nom = "Salaire 2008"
    Type = "Indicateur"
    Formule = "=<Salaire(Requête 1)>"
    et
    Variable 2:
    Nom = "Salaire 2009"
    Type = "Indicateur"
    Formule = "=<Salaire(Requête 2)>"
    ou quelquechose approchant.

    Il ne te reste plus qu'à créer un tableau avec un des objets nom, un des objets prenom puis avec les deux variables que tu viens de créer. tu ne devrais plus avoir qu'un seule ligne par personne.

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 71
    Points : 49
    Points
    49
    Par défaut
    maintenant cela me met :
    Nom Prenom Salaire 2008 Salaire 2009
    tutu tutu #ERRI #ERRI



    EDIT : A j'ai oublié de délier je fais ça.

  14. #14
    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
    OK, alors supprimes ton tableau, puis dans le bandeau de gauche, sélectionnes les objets dont tu as besoin avant de faire glisser le tout dans ton rapport. (Exemple en PJ)
    Images attachées Images attachées  

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 71
    Points : 49
    Points
    49
    Par défaut
    Effectivement ça me mettait une erreur car je n'avais pas supprimé le lien entre les salaires.

    Je te remercie énormément pour les informations que tu m'as donné sur Deski mais également pour mon problème qui est résolu.

    Merci de ton aide.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 12/01/2011, 14h59
  2. [AC-2003] Affichage Légende des champs d'une requete
    Par HE dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 22/06/2009, 15h39
  3. Besoin d'aide pour une sous requete
    Par Celia1303 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 12/10/2005, 14h09
  4. Ramener plusieurs champs dans une sous requête...
    Par David.V dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 12/01/2005, 07h54
  5. Requete avec une sous-requete... Ne fonctionne qu'a moitie..
    Par mythtvtalk.com dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 18/08/2003, 09h54

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