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 :

Inner join avec un tmap


Sujet :

Développement de jobs

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 41
    Points : 44
    Points
    44
    Par défaut Inner join avec un tmap
    Bonjour à tous,
    j'ai un souci avec le Inner join du tmap.
    ça fait une journée entière que je bosse là dessus.
    En fait, je dois créer un job qui effectue une requête SQL avec des jointures entres plusieurs tables provenant de deux BD.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    select distinct 
          c.CNCTR, 
          c.CNBL
          e.EXNAV,
          e.ENVOY,
          e.EIESC,
          m.MIPORPRO,
          m.MIPOR,
          ma.MLMAR,
          ma.MTMAR,
          b.BCCND,
          c.CPOCT
    from serdta.CONTENEU c
    inner join (select distinct * from serdta.BL where BETAB='F')b on (c.CNBL=b.BNBL and c.CIMAN=b.BIMAN)
    inner join serdta.MANIFEST m on c.CIMAN=m.MIMAN
    inner join serdta.ESCALE e on m.MIESC=e.EIESC
    inner join (select distinct * from gterdtas01.PESCALE where (ltrim(rtrim(NSYSINFP))<>'' or NSYSINFP is not null)) es on cast(e.EIESC as nvarchar(20))=es.NAUTOP
    inner join (select distinct MIMAN, MTMAR,MLMAR,MNBL from serdta.marchand)  ma on (c.CNBL=ma.mnbl and c.CIMAN=ma.mIMAN)
    where b.BSENS='E'
    .

    Je divise la requête en deux sous requêtes (puisque j'ai deux BD sources).
    1ere requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    select distinct 
          c.CNCTR, 
          c.CNBL,
          e.EIESC,
          e.EXNAV,
          e.ENVOY,
          m.MIPORPRO,
          m.MIPOR,
          ma.MLMAR,
          ma.MTMAR,
          b.BCCND,
          c.CPOCT
    from serdta.CONTENEU c
    inner join (select distinct * from serdta.BL where BETAB='F')b on (c.CNBL=b.BNBL and c.CIMAN=b.BIMAN)
    inner join serdta.MANIFEST m on c.CIMAN=m.MIMAN
    inner join serdta.ESCALE e on m.MIESC=e.EIESC
    inner join (select distinct MIMAN, MTMAR,MLMAR,MNBL from serdta.marchand)  ma on (c.CNBL=ma.mnbl and c.CIMAN=ma.mIMAN)
    where b.BSENS='E'
    et la seconde requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    SELECT 
      PESCALE.ESCALE, 
      PESCALE.PARC, 
      PESCALE.LIGNE, 
      PESCALE.PORESC, 
      PESCALE.NATESC, 
      PESCALE.NAVIRE, 
      PESCALE.VOYIMP, 
      PESCALE.VOYEXP, 
      PESCALE.DATETA, 
      PESCALE.HEURETA, 
      PESCALE.DATETD, 
      PESCALE.HEURETD, 
      PESCALE.DATEARV, 
      PESCALE.HEUREARV, 
      PESCALE.DATEDEP, 
      PESCALE.HEUREDEP, 
      PESCALE.ARMCOQ, 
      PESCALE.MANCOQ, 
      PESCALE.CONCOQ, 
      PESCALE.PQUAI, 
      PESCALE.IND_HSP, 
      PESCALE.IND_CHAR, 
      PESCALE.IND_DECH, 
      PESCALE.DAT_FERM, 
      PESCALE.HEU_FERM, 
      PESCALE.NAUTOP, 
      PESCALE.NSYSINFP, 
      PESCALE.DATDDES, 
      PESCALE.HEUDDES, 
      PESCALE.DATFSAI, 
      PESCALE.HEUFSAI, 
      PESCALE.ESCADIV, 
      PESCALE.STAGMAJ, 
      PESCALE.DATEMAJ, 
      PESCALE.CUSRMAJ, 
      PESCALE.IND_F01, 
      PESCALE.TESCEMBA, 
      PESCALE.TESCDEBA
    FROM PESCALE
    where ltrim(rtrim(NSYSINFP))<>'' or NSYSINFP is not null
    .

    Pour finir je créé une liaison inner join entre les deux sous-requêtes (la 1ère comme liaison main et la 2e comme liaison lookup) à l'aide d'un tmap (avec pour condition : row1.EIESC.toString = NAUTOP).

    Le problème qui se pose c'est que ça ne charge aucune donnée, pourtant dans le SGBD la requête renvoie bien des résultats !
    Je sais plus vraiment quoi faire

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Septembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Septembre 2008
    Messages : 48
    Points : 71
    Points
    71
    Par défaut jointure
    Bonjour,

    Question bête peut être mais dans ton tMap, pour la jointure, tu as du écrire ceci non ?

    row1.EIESC.toString.equals(row2.NAUTOP)

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 41
    Points : 44
    Points
    44
    Par défaut schéma de la jointure
    Bonjour, voici ma jointure (dans le design de mon tmap)
    Nom : jointure.PNG
Affichages : 500
Taille : 22,8 Ko

    Je sais pas s'il y a autre chose que j'aurais dû ajouter ?!?!

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Septembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Septembre 2008
    Messages : 48
    Points : 71
    Points
    71
    Par défaut tFileOutputDelimited et copie d'écran du job
    Oui pardon, c'est en sortie qu'il aurait fallu mettre le equals().

    Il n'y a aucune erreur au chargement?
    Il est indiqué 0 ligne en sortie du tMap?
    En créant une 2nde sortie vers un tFileOutputDelimited (csv), cela donne quoi?
    Pourrait-on voir une copie d'écran du job quand l'exécution est terminée?

    Merci d'avance.

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 41
    Points : 44
    Points
    44
    Par défaut Capture du job
    Salut, voici une capture d'écran de mon job :

    Nom : job.PNG
Affichages : 469
Taille : 14,3 Ko

    Le composant serval contient la première sous requête et le composant oscar contient la deuxième.
    Je fais la liaison Inner Join dans le tmap en prenant toutes les correspondances.
    Mais il n'y a rien en sortie !

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Septembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Septembre 2008
    Messages : 48
    Points : 71
    Points
    71
    Par défaut tMap
    Est ce qu'on peut voir une copie d'écran du tMap?
    Il n'y a pas d'erreur après le tMap donc c'est dans celui ci qu'il y a un soucis.
    Soit sur la sortie soit en entrée sur la correspondance entre les 2 champs je dirais.

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 41
    Points : 44
    Points
    44
    Par défaut Le problème
    Bonjour,

    j'ai trouvé la source du problème.
    En fait, il s'agit d'un filtre dans le composant d'entrée "serval" qui posait problème.
    Je l'ai retiré de ce composant et je l'ai plutôt renvoyé dans le tmap (dans le lien de sortie) et ça marche très bien !

    Titou82

    Voici une capture de mon tmap :

    Nom : tmap.png
Affichages : 492
Taille : 199,2 Ko


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

Discussions similaires

  1. Inner join avec condition
    Par fguigui dans le forum Langage SQL
    Réponses: 7
    Dernier message: 09/04/2012, 19h40
  2. Inner Join avec des NULL
    Par BLJ.CHAUVIN dans le forum Requêtes
    Réponses: 2
    Dernier message: 05/07/2011, 11h28
  3. INNER JOIN avec un LIKE
    Par Spiritueux dans le forum Langage SQL
    Réponses: 3
    Dernier message: 27/10/2008, 17h14
  4. Réponses: 7
    Dernier message: 13/12/2007, 13h32
  5. INNER JOIN avec des données de sélection
    Par EK1_ dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/05/2006, 18h40

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