3 Replies Latest reply: Nov 18, 2015 6:32 AM by Florent Lelarge-Otiniano RSS

    Jointure entre deux tables autrement que par homonymie

      Bonjour,

       

      Je dois implémenter ces deux tables dans Qlikview, cependant un problème se pose : si je renomme DP et DR en Cim10Id, je vais avoir deux attributs ayant le même nom et cela me génère directement une erreur. Comment puis-je contourner ce problème et modéliser la double relation qu'il y a entre ces deux tables ?

      Merci d'avance.SteffieLili_cim10.png

        • Re: Jointure entre deux tables autrement que par homonymie
          Christophe Brault

          Bonjour,

           

          Si deux tables ont une relation sur deux champs, je pense qu'il faut concatener les deux champs dans chacune des deux tables pour créer un ID unique.

           

          Si les deux relations sont vraiment indépendante, on peut toujours éclater la  table THS en deux table.

           

          Dans QlikView, la modélisation des données est souvent différente que celle d'origine en fonction des besoins de visualisation.

           

          Pour plus de détail, expliquez à la communauté ce que contiennent les tables mais surtout ce que vous vous lez faire avec.

           

          Cordialement

          • Re: Jointure entre deux tables autrement que par homonymie
            Vincent Canuel

            Bonjour,

             

            Je suppose que vous souhaitez pouvoir rattacher à un DP/DR de la table RSA le libellé correspondant dans la nomenclatures CIM10, chargée dans votre table THS.

             

            Si j'ai bien compris, il ne s'agit alors pas d'une relation unique sur 2 champs (ce qui aurait pu se résoudre en concaténant les 2 champs pour en créer un seul "unique"), mais bien de deux relations différentes.

             

            Il y a plusieurs façon de faire, le plus simple étant de faire un double chargement de la table THS :

            - charger une première fois la table sous le nom THS_DP en renommant les champs (ex : Cim10Id en DP_Cim10Id) de façon à récupérer les libellés des DP et ne faire que le lien nécessaire.

            - charger une deuxième fois la même table sous le nom THS_DR en renommant les champs (ex : Cim10Id en DR_Cim10Id) de façon à récupérer les libellés des DR et ne faire que le lien nécessaire.

             

            On crée ainsi deux liens uniques sur deux tables uniques (on charge deux fois la table THS, sous deux noms différents).

             

            Attention au passage de bien modifier les noms des champs des tables THS_DP et THS_DR pour ne pas faire un lien intempestif entre ces deux tables (sur les variables "chapitre" et "libelle").

             

            Pour gagner de la place et ne pas charger deux fois la table THS entièrement, on peut charger uniquement les codes pouvant être DP la première fois, et uniquement les codes pouvant être en DR la deuxième fois, en utilisant des clauses du type WHERE EXISTS par exemple (ce qui revient à exploser la table THS, comme proposé par christophebrault).

             

            A noter que cela nécessite de charger les tables THS_DP et THS_DR après la table RSA, sinon pas de filtre possible dans ce sens.

             

            Je mets en PJ un exemple, avec quelques données imaginaires. Les clauses WHERE EXISTS sont commentées par défaut.

            • Re: Jointure entre deux tables autrement que par homonymie
              Florent Lelarge-Otiniano

              bonjour Stephanie,

               

              je ne sais pas si ce vieux billet est tjs d'actualité, mais Vincent a raison : c'est ce que je fais de mon coté :

              je duplique la table CIM10-codes-libellés pour DP et DR (avec des noms différents pour ne pas avoir de boucles)

              ex

              TB THS                                             TB RSA                                                       TB THS   

               

              Cim10Id as @CleCim10DP,               DP_Cim10Id as @CleCim10DP,                    Cim10Id as @CleCim10DR,

              Cim10Id as Cim10DP,                        DP_Cim10Id as @CleCim10DR,                   Cim10Id as Cim10DR,

              chapitre as chapitreDP,                      DP_Cim10Id,                                                chapitre as chapitreDR,

              libelle as libelleDP                              ...                                                                 libelle as libelleDR


              il faut charger 1 fois THS pour la jointure DP et 1 fois pour la jointure DR

              Ici aussi en France on utilise la CIM-10 et le groupage RSA pour l'activité hospitalière.

              Si tu veux , j'ai plein de tableaux de bord pour cette activité.

               

              Florent