Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

pb left join entre 3 tables

bonjour,

je reposte mon message car j'ai l'impression que le 1er n'est pas passé.

je voudrais lié 3 tables avec un left join mais ça ne fait pas ce que je veux. La laison entre les 2 premères tables doit se faire en utilisant 2 champs. En utilisant le 1er pas de soucis mais lorsque je rajoute le 2ème les liaisons ne se font plus correctement. Les 2 champs sont [Code entreprise]  [Code groupe] il faut savoir aussi que les données sont les mêmes dans ces 2 champs.

voici le code, si vous avez une piste de solution, je vous remercie d'avance :

LOAD [Nom formation],
     [Nom produit],
     [Site],     
     [Offre],    
     [Nom groupe],
     [Code groupe],
     [Etat facture groupe],
     [Gestionnaire],     
     [Date début groupe],
     [Date fin groupe],    
     Année,
     Mois,
     Année*100+Mois as Yearmonth,
     [Entreprise],
     [Montant réalisé assiduité],
     [Type formation],
     [Num département],
     [Département entreprise],
     left([Code postal entreprise],4)&'0' as [Code postal entreprise],
     [Nom convention],
     [Statut apprenant],
     [Conseiller],
     [Budget commercial],
     [Code entreprise]  
FROM
[$(FicQVD_QlikMartCom)]
(qvd);


Dimlienentreprise:
LOAD
  [Code entreprise],
  [Code groupe],
  [Budget CA Client],
     CODE_RUB_DETAIL
FROM
[$(FicQVD_Dimlienentreprise)]
(qvd) ;

LOAD
  CODE_RUB_DETAIL,
         NOM_RUBRIQUE as [Rubrique],
         NOM_RUB_DETAIL as [Valeur rubrique]
FROM
[$(FicQVD_Dimrubrique)]
(qvd) where NOM_RUBRIQUE='ADEFIM' or NOM_RUBRIQUE='Adhérent UIMM' or NOM_RUBRIQUE='Typologie Client' or NOM_RUBRIQUE='Budget CA' or NOM_RUBRIQUE='Type de Formation';

5 Replies
eddysanchez
Partner - Creator
Partner - Creator

What happend with:

QlikMartCom:

LOAD [Nom formation],
     [Nom produit],
     [Site],     
     [Offre],    
     [Nom groupe],
     [Code groupe],
     [Etat facture groupe],
     [Gestionnaire],     
     [Date début groupe],
     [Date fin groupe],    
     Année,
     Mois,
     Année*100+Mois as Yearmonth,
     [Entreprise],
     [Montant réalisé assiduité],
     [Type formation],
     [Num département],
     [Département entreprise],
     left([Code postal entreprise],4)&'0' as [Code postal entreprise],
     [Nom convention],
     [Statut apprenant],
     [Conseiller],
     [Budget commercial],
     [Code entreprise]  
FROM
[$(FicQVD_QlikMartCom)]
(qvd);

Left Join (QlikMartCom)

LOAD
  [Code entreprise],
  [Code groupe],
  [Budget CA Client],
     CODE_RUB_DETAIL
FROM
[$(FicQVD_Dimlienentreprise)]
(qvd) ;

Left Join (QlikMartCom)

LOAD
  CODE_RUB_DETAIL,
         NOM_RUBRIQUE as [Rubrique],
         NOM_RUB_DETAIL as [Valeur rubrique]
FROM
[$(FicQVD_Dimrubrique)]
(qvd) where NOM_RUBRIQUE='ADEFIM' or NOM_RUBRIQUE='Adhérent UIMM' or NOM_RUBRIQUE='Typologie Client' or NOM_RUBRIQUE='Budget CA' or NOM_RUBRIQUE='Type de Formation';

Do you have null values of CODE_RUB_DETAIL? may be you need to use INNER JOIN

Not applicable
Author

avec left join je perds le contenu de mes champs [Rubrique] et [Valeur rubrique]

et avec inner join je perds tout

almamy_diaby
Creator
Creator

Peux-tu relir la table en resident créée par la jointure de la 1ère et la 2ème table  ensuite faire la jointure de la 3è table. essaie avec le code ci-dessous

Table1:

LOAD [Nom formation],
     [Nom produit],
     [Site],     
     [Offre],    
     [Nom groupe],
     [Code groupe],
     [Etat facture groupe],
     [Gestionnaire],     
     [Date début groupe],
     [Date fin groupe],    
     Année,
     Mois,
     Année*100+Mois as Yearmonth,
     [Entreprise],
     [Montant réalisé assiduité],
     [Type formation],
     [Num département],
     [Département entreprise],
     left([Code postal entreprise],4)&'0' as [Code postal entreprise],
     [Nom convention],
     [Statut apprenant],
     [Conseiller],
     [Budget commercial],
     [Code entreprise]  
FROM
[$(FicQVD_QlikMartCom)]
(qvd);

left join


Table2:
LOAD
  [Code entreprise],
  [Code groupe],
  [Budget CA Client],
     CODE_RUB_DETAIL
FROM
[$(FicQVD_Dimlienentreprise)]
(qvd) ;

Table_Memoire:

LOAD

     [Nom formation],

     [Nom produit],

     [Site],     

     [Offre],    

     [Nom groupe],

     [Code groupe],

     [Etat facture groupe],

     [Gestionnaire],     

     [Date début groupe],

     [Date fin groupe],    

     Année,

     Mois,

     Yearmonth,

     [Entreprise],

     [Montant réalisé assiduité],

     [Type formation],

     [Num département],

     [Département entreprise],

     [Code postal entreprise],

     [Nom convention],

     [Statut apprenant],

     [Conseiller],

     [Budget commercial],

     [Code entreprise] ,      

    [Budget CA Client],

    CODE_RUB_DETAIL

  resident Table1;

 

left join

Table3:

LOAD

  CODE_RUB_DETAIL,
         NOM_RUBRIQUE as [Rubrique],
         NOM_RUB_DETAIL as [Valeur rubrique]
FROM
[$(FicQVD_Dimrubrique)]
(qvd) where NOM_RUBRIQUE='ADEFIM' or NOM_RUBRIQUE='Adhérent UIMM' or NOM_RUBRIQUE='Typologie Client' or NOM_RUBRIQUE='Budget CA' or NOM_RUBRIQUE='Type de Formation';

Drop table Table1;

eddysanchez
Partner - Creator
Partner - Creator

If you "lost" the values of [Rubrique] and [Valeur rubrique], it's because for this cases CODE_RUB_DETAIL don't match.

Try:

Trim(CODE_RUB_DETAIL) as CODE_RUB_DETAIL

for the both tables


Not applicable
Author

bonjour et merci pour le coup de main.

bon en faisant comme ça directement je n'obtiens pas de bon résultat alors j'ai pris le problème autrement.

au lieu de faire les liasons de mes tables ici je les ai faite avant.

j'ai fusionné en left join la table2 et 3 dans un qvd en utilisant la technique du résident énoncé précédemment puis ensuite j'ai fait un left join entre la table1 et le qvd précédent en prenant soin de séparer mes laisons entre tables et là ça fonctionne

c'est un peu tordu mais le résultat est là