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

Développement de jobs Discussion :

Jointure entre 2 valeurs null dans un tMap


Sujet :

Développement de jobs

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Jointure entre 2 valeurs null dans un tMap
    Bonjour,

    Je souhaiterais effectuer sous Talend une jointure entre 2 tables en tenant compte des valeurs null, exemple :

    Code TABLE 1 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    1111;aaaa;42;bibi
    1111;null;17;bobo

    Code TABLE 2 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    1111;aaaa;42;titi
    1111;bbbb;42;titi
    1111;null;17;toto

    Je veux effectuer la jointure sur les 3 premiers champs des 2 tables et récupérer les derniers champs.


    Code RESULTAT SOUHAITE : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    1111;aaaa;42;bibi;titi
    1111;null;17;bobo;toto
    1111;bbbb;42;titi;null
    On remarque sur la 2e ligne que la jointure s'est faite malgré la valeur null dans les 2 tables sur le champ n°2


    Ce qui se traduirait en SQL par :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    select
        coalesce(A.champ1,B.champ1) as champ1,
        coalesce(A.champ2,B.champ2) as champ2,
        coalesce(A.champ3,B.champ3) as champ3,
        A.champ4 as champ4,
        B.champ4 as champ5
    from
        table1 as A
        full outer join table2 as B
            on A.champ1 = B.champ1
            and (A.champ2 = B.champ2 or (A.champ2 is null and B.champ2 is null))
            and A.champ3 = B.champ3

    Je ne vois pas comment traduire dans un tMap la condition "(A.champ2 = B.champ2 or (A.champ2 is null and B.champ2 is null))" pour la jointure.
    Toute forme d'aide serait la bienvenue, merci d'avance.



    ps : il s'agit de 2 sources différentes, je dois effectuer ce traitement via Talend et non mon SGBD (DB2).

  2. #2
    Membre éprouvé
    Homme Profil pro
    Architecte Décisionnel
    Inscrit en
    Février 2008
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte Décisionnel

    Informations forums :
    Inscription : Février 2008
    Messages : 866
    Points : 1 260
    Points
    1 260
    Par défaut
    Bonjour,

    Pour pouvoir faire une jointure sur un champ qui gère les valeurs nulles, en général je remplace la valeur nulle par une valeur spécifique (en la choisissant bien).

    Si tes 2 sources sont des bases de données, tu peux gérer ces remplacements dans les select.

    Nicolas

Discussions similaires

  1. Valeur NULL dans une jointure
    Par perdeak dans le forum Langage SQL
    Réponses: 14
    Dernier message: 13/09/2011, 18h29
  2. Pb valeur Null dans RecordSet avec jointure
    Par sleeg dans le forum ASP
    Réponses: 13
    Dernier message: 23/05/2011, 16h58
  3. Valeur null dans une jointure
    Par Christophe P. dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/12/2006, 09h48
  4. ASP et valeur NULL dans requêtes SQL
    Par chuck_m dans le forum ASP
    Réponses: 7
    Dernier message: 13/08/2004, 11h15
  5. Passer une valeur Null dans un argument de procédure
    Par preempalver dans le forum VBA Access
    Réponses: 5
    Dernier message: 30/12/2003, 20h52

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