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

SAS Base Discussion :

Jointure : Merge ou Set


Sujet :

SAS Base

  1. #1
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Février 2009
    Messages : 81
    Points : 42
    Points
    42
    Par défaut Jointure : Merge ou Set
    Bonjour,

    je voudrais joindre plusieurs tables en une seule fois et je ne trouve pas la solution...

    je vous explique mon pb :

    j'ai 8 tables sources :t_attente, t_objet, t_ss_objet, t_det_ss_objet, t_produit, t_marque, t_garantie et t_option qui sont ainsi faite :
















    Si j'utilise le code suivant (MERGE):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    data n_ecran2;
    	merge t_produit t_marque t_garantie t_option t_objet t_ss_objet t_det_ss_objet t_attente;	
    	by num_reclam;
    run;
    j'obtiens la table suivante :



    et si j'utilise le code suivant (SET) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    data n_ecran2;
    	merge t_produit t_marque t_garantie t_option t_objet t_ss_objet t_det_ss_objet t_attente;	
    	by num_reclam;
    run;
    j'obtiens la table suivante :

    Aucune des 2 solutions ne me convienne.

    Dans le premier cas (merge), l'individu 8633 est répété plusieurs fois, la variable produit est dupliquée...

    Dans le second cas (set), certaines lignes ne sont pas remplies, par exemple pour l'individu 8633 et pour la donnée objet, le tableau ne se remplit qu'à la ligne 2.

    Je voudrais qu'il se remplisse dès la ligne 1.

    Cependant, les n_produit, n_objet, n_option (etc) ne sont pas liées... je peux avoir 1 seul produit et plusieurs objets...

    Je vous remercie pour votre aide précieuse !

  2. #2
    Membre habitué

    Homme Profil pro
    Consultant Support Client SAS
    Inscrit en
    Mai 2011
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Support Client SAS
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 94
    Points : 180
    Points
    180
    Par défaut
    Bonjour,

    Les deux comportements sont normaux.

    Votre table T_SS_OBJET contient 3 lignes 8633, de ce fait, en résultat, vous ne pourrez obtenir une seule ligne avec le merge.
    En effet, quelle valeur de n_ss_objet, voulez-vous garder?

    L'instruction SET rajoute des observations, et des variables si nouvelles variables. De ce fait, votre résultat est logique également.

    Cordialement,
    Jérémy NOEL

  3. #3
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Février 2009
    Messages : 81
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par frajen Voir le message
    Bonjour,

    Les deux comportements sont normaux.

    Votre table T_SS_OBJET contient 3 lignes 8633, de ce fait, en résultat, vous ne pourrez obtenir une seule ligne avec le merge.
    En effet, quelle valeur de n_ss_objet, voulez-vous garder?

    L'instruction SET rajoute des observations, et des variables si nouvelles variables. De ce fait, votre résultat est logique également.

    Cordialement,
    Jérémy NOEL
    Oui oui, je sais que mon résultat est normal. Simplement, j'aimerais avoir le résultat suivant :


  4. #4
    Membre émérite

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mars 2005
    Messages
    1 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 364
    Points : 2 329
    Points
    2 329
    Par défaut
    Il me semble que le dernier résultat et le même que celui du merge!! Non?
    il y a trop de données et c'est difficile de comparer l'ensemble des tables.
    Consultez les FAQs et les anciens postes avant de poser vos questions. Merci

  5. #5
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Février 2009
    Messages : 81
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par bahraoui Voir le message
    Il me semble que le dernier résultat et le même que celui du merge!! Non?
    il y a trop de données et c'est difficile de comparer l'ensemble des tables.
    Avec le merge, l'individu 8633 est dupliqué pour la variable produit et du coup quand je fais mes comptages, il est compté plusieurs fois...

    en fait, l'idée, et je pourrais faire autrement, mais c'est de faire un truc assez simple. Je sais comment je pourrais faire compliqué avec des sql etc... mais je pense qu'il y a plus simple... du coup, je demande aux experts ^^

  6. #6
    Membre éclairé

    Femme Profil pro
    SAS FRANCE - Support Clients France et Europe
    Inscrit en
    Février 2010
    Messages
    289
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : SAS FRANCE - Support Clients France et Europe
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 289
    Points : 886
    Points
    886
    Par défaut
    Bonjour,

    Si j'ai bien compris la problématique, pour obtenir le résultat souhaité il faut procéder en 2 étapes :
    - d'abord le merge
    - puis une proc summary par num_reclam et produits, ainsi les autres colonnes seront sommées et on aura alors bien une seule ligne par num_reclam et produits.

    Cordialement
    Géraldine Cade-Deschamps
    Support Clients SAS
    Cordialement,

    --
    Géraldine CADE-DESCHAMPS
    Consultante ▪ Support Clients SAS
    Tel: +33 1 60 62 12 12 ▪ support@sas.com
    www.sas.com/france
    SAS® … THE POWER TO KNOW®

Discussions similaires

  1. Jointures MERGE - NESTD LOOP - HASH
    Par bar_79 dans le forum PL/SQL
    Réponses: 7
    Dernier message: 05/08/2010, 16h49
  2. [1.x] Nested set avec jointure
    Par damiensan dans le forum Symfony
    Réponses: 4
    Dernier message: 21/05/2010, 14h21
  3. [DATA] set merge update modify
    Par enicnath dans le forum SAS Base
    Réponses: 1
    Dernier message: 20/10/2009, 15h19
  4. [2.3.2] Jointure complexe entre deux data set
    Par Nicolas281088 dans le forum BIRT
    Réponses: 2
    Dernier message: 11/05/2009, 16h47
  5. Fusion de deux tables : MERGE ou SET
    Par Flynt dans le forum SAS Base
    Réponses: 10
    Dernier message: 23/06/2008, 10h51

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