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 :

Accès direct et multiple sur clef


Sujet :

SAS Base

  1. #1
    Membre actif
    Inscrit en
    Novembre 2003
    Messages
    549
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 549
    Points : 243
    Points
    243
    Par défaut Accès direct et multiple sur clef
    Bonjour,
    je dispose de deux tables.
    La première contient une clef unique par observation.
    La seconde contient une clef et une valeur, avec plusieurs observations pour la même clef.
    Pour chaque clef lue dans la table 1, Je voudrais lire une à une les observations de la table 2.
    Je voudrais procéder par accès direct et non en créant une troisième table qui serait un MERGE des deux premières.
    Est-ce que quelqu'un saurait comment procéder ?

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 747
    Points : 978
    Points
    978
    Par défaut
    salut,

    Donc tu veux faire une jointure sans créer de table?

    Tu peux faire un MERGE avec un data _NULL_, si tu as deux clés pas besoin de trier l'index va faire le boulot.

    xav

  3. #3
    Membre actif
    Inscrit en
    Novembre 2003
    Messages
    549
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 549
    Points : 243
    Points
    243
    Par défaut
    Je ne veux pas faire de merge.
    Par exemple, pour écrire le contenu de table 2 dans la log, je voudrais faire quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    data _NULL_;
    set T1;
    ...
    ...
    do ...;
       set T2 key=clef;
       put clef valeur;
    end;
    ...
    ...
    run;
    Est-ce possible ?

  4. #4
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Points : 6 064
    Points
    6 064
    Par défaut
    Et bien fait une table de hashage. Cela montera la table de référence en mémoire et tu pourras l'appeler en lisant la table principale.

    Ou bien tu crées un format à partir de la petite table et tu fais un test sur ta table principale avec. cherche CNTLIN dans l'aide de SAS.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 747
    Points : 978
    Points
    978
    Par défaut
    pourquoi pas de MERGE? bon c'est vrai que c'est pas la chose la plus géniale mais bon des fois cela rend service

  6. #6
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Points : 6 064
    Points
    6 064
    Par défaut
    +1 pour Xavier. En plus c'est moins compliqué

  7. #7
    Membre actif
    Inscrit en
    Novembre 2003
    Messages
    549
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 549
    Points : 243
    Points
    243
    Par défaut
    En fait j'emploie le merge tous les 4 matins.
    Ca marche très bien, mais je souhaite juste savoir si on peut faire un accès direct.

    Par exemple, lorsque dans les deux tables la clef est unique, on peut accéder directement aux données de la seconde table en faisant
    set Table2 key=CLEF / unique;

    Lorsque dans la seconde table, ce qui est mon problème, plusieurs observations ont la même clef, je ne sais pas comment faire pour obtenir successivement toutes les observations. Même en supprimant l'option UNIQUE, il ne garde que la première observation rencontrée.
    Peut-être faut-il faire une boucle ?

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 747
    Points : 978
    Points
    978
    Par défaut
    si tu as des indexes SAS va les utiliser et donc le faire de manière directe.

    tu peux le valider en ajoutant l'option :

    xav

Discussions similaires

  1. [Débutant] Lire en accès direct un fichier sur CDROM
    Par Jano57 dans le forum VB.NET
    Réponses: 5
    Dernier message: 02/10/2011, 15h59
  2. accès direct sur clef
    Par enicnath dans le forum SAS Base
    Réponses: 3
    Dernier message: 09/07/2009, 10h47
  3. Accès multiple sur une même table
    Par ravaid dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 18/04/2008, 14h09
  4. Accès multiple sur une même table
    Par ravaid dans le forum Développement
    Réponses: 3
    Dernier message: 18/04/2008, 13h27

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