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 :

Select : avec ou sans merge ?


Sujet :

SAS Base

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 306
    Points : 46
    Points
    46
    Par défaut Select : avec ou sans merge ?
    bonjour,


    pour faire une select sur deux tables, faut-il obligatoirement faire une merge avant ? ou peut-on tenter une select sans risque ?
    merci...

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Bonjour

    Votre demande n'est pas très claire.

    Pour faire un SELECT sur deux tables, il faut utiliser la syntaxe SELECT ... JOIN....

    Poster le DDL de vos tables et expliquer ce que vous voulez faire et on pourra sans doute fournir une réponse plus précise.

  3. #3
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Pour obtenir des données provenant de deux tables, il suffit de faire un SELECT avec une jointure...

    Que voulez vous faire comme merge ?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 306
    Points : 46
    Points
    46
    Par défaut
    bonjour,


    pour les données, il s'agit de comparer deux codes (type caractères donc) pour voir s'il y a des codes qui sont dans un fichier et non dans l'autre.
    En fait, il me faut les codes qui ne sont ni dans l'un ni dans l'autre des fichiers.

    faut-il une merge ? : non à priori car seront sélectionnées les codes apparaissant dans l'un et dans l'autre

    une concaténation ? : non, il ne s'agit pas d'une simple juxtaposition d'éléments, il faut que les éléments semblables soient mis sur une même ligne,

    ... Une Select sera-t-elle pertinente ? Car il ne faut pas supprimer les éléments qui ne sont pas présents

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par logiclogic Voir le message
    pour les données, il s'agit de comparer deux codes (type caractères donc) pour voir s'il y a des codes qui sont dans un fichier et non dans l'autre.
    En fait, il me faut les codes qui ne sont ni dans l'un ni dans l'autre des fichiers.

    Déjà on ne voit pas trop ce que des fichiers viennent faire ici.

    Ensuite merci de poster le DDL de vos tables

  6. #6
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par logiclogic Voir le message
    il me faut les codes qui ne sont ni dans l'un ni dans l'autre des fichiers.
    D'où viennent les codes alors, s'ils ne sont ni dans l'un ni dans l'autre ?

    On va supposer que vous vouliez parler de table et non de fichier, et que vous cherchez les codes qui ne sont pas dans les deux tables à la fois :

    Soient deux tables T1 et T2, on cherche les codes qui sont dans T1 mais pas dans T2, ou dans T2 mais pas dans T1 , on peut faire ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT COALESCE(T1.code, T2.code)
    FROM T1
    FULL OUTER JOIN T2
     ON T1.code = T2.code
    WHERE T1 IS NULL
    OR T2 IS NULL

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 306
    Points : 46
    Points
    46
    Par défaut
    Pour information, c'est sous SAS et voici mon code :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    /*TRI des données */
    proc sort data=tab1; by id; run;
    proc sort data=tab2; by num; run;
     
    data similarites;
       merge tab1(in=a) tab2(in=b);
       by id;
       if a and not(b);
       order by id;
    run;
    Plusieurs problèmes :
    1) le tri ne s'effectue sur aucun des deux fichiers.
    2) c'est une merge que je fais. Est-ce possible ? En fin de compte, il s'agit de faire l'union/intersection des deux tables...
    3) faut-il que les colonnes des codes aient le même nom ? Id dans la première table et num dans la 2nde table, mais c'est le même code. Si non, comment fait-on pour l'instruction BY dans ce cas ? Un identifiant temporaire est-il créé ?
    4) Order by id ne marche pas, mais il y a-t-il un intérêt à le mettre ?

  8. #8
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par logiclogic Voir le message
    Pour information, c'est sous SAS
    Peut être eut il fallu commencer par la !!!

    et voici mon code :
    Ce langage n'est pas du SQL.
    Ici c'est le forum "Langage SQL".

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 306
    Points : 46
    Points
    46
    Par défaut
    Pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT COALESCE(T1.code, T2.code)
    FROM T1
    FULL OUTER JOIN T2
     ON T1.code = T2.code
    WHERE T1 IS NULL
    OR T2 IS NULL
    ça ne marche pas, car les codes se cumulent sur une colonne or, je veux pouvoir voir le différentiel entre les codes, donc :
    avoir :
    colonne1 : code de la table 1
    colonne2 : code de la table 2
    --> cela permettra de voir les différences

    donc, c'est un merge ?
    en tout cas, j'ai créé une nouvelle table avec le code de la table 1, et je fais une merge pour y accoler le code de la table 2.
    Une select eut pu être plus efficace en terme de temps, mais ?? Je n'y arrive pas!!! Peut-être est-ce tout simple...


    Sur ma merge, le log indique :
    WARNING: Multiple lengths were specified for the BY variable id by input data sets.
    This may cause unexpected results.
    ERROR: BY variables are not properly sorted on data set .
    (code et id sont la même chose)

    ????? Pourquoi ????
    Length de id de la table 1 est identique à celui de l'id de la table 2 (4 caractères). Concrètement, il y a des codes à 4 caractères (1111 par exemple) uniquement dans la table 2 mais c'est normal, il s''agit de repérer les différences.

    Est-ce du au fait que j'ai nommé les deux colonnes de codes par le même nom, ce qui fait que la colonne des deux tables n'en forme plus qu'une dans la nouvelle table ?

    2 remarques :
    1) le tri ne s'effectue sur aucun des deux fichiers.
    résolu

    3) faut-il que les colonnes des codes aient le même nom ? Id dans la première table et num dans la 2nde table, mais c'est le même code. Si non, comment fait-on pour l'instruction BY dans ce cas ? Un identifiant temporaire est-il créé ?
    résolu, j'ai nommé de la même manière, mais ma question demeure, si quelqu'un a une pierre à apporter à l'édifice...

    si vous avez des propositions à faire, car je me noie entre le merge et le select , merci...

  10. #10
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par logiclogic Voir le message

    ça ne marche pas, car les codes se cumulent sur une colonne or, je veux pouvoir voir le différentiel entre les codes, donc :
    avoir :
    colonne1 : code de la table 1
    colonne2 : code de la table 2
    --> cela permettra de voir les différences

    Bah enlevez le COALESCE !

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 306
    Points : 46
    Points
    46
    Par défaut
    @aieeeuuu : pourriez-vous svp expliquer en détail votre code ? merci....

Discussions similaires

  1. Modulo dans un SELECT avec Alias ou Sans
    Par deco76 dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 07/02/2013, 00h51
  2. Filtrer un resultat avec ou sans SELECT ?
    Par vinze60 dans le forum Langage
    Réponses: 16
    Dernier message: 12/01/2010, 14h04
  3. Utilisation de select avec un formulaire sans bouton!
    Par solaar dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 15/01/2009, 17h06
  4. pb de select avec size avec choix multiple
    Par La_picolle dans le forum ASP
    Réponses: 10
    Dernier message: 28/08/2003, 15h21
  5. requete SELECT avec un nombre constant
    Par gurumeditation dans le forum Requêtes
    Réponses: 3
    Dernier message: 04/07/2003, 20h04

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