|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre confirmé
![]() Inscription : juillet 2005 Messages : 402 ![]() |
Bonjour.
J'aimerais importer 2 fois la même table dans mon catalogue afin d'en séparer le contenu. Par exemple, à partir d'une table PAIEMENT, j'aimerais avoir dans le catalogue PAIEMENT_CHEQUE et PAIEMENT_CB. Ce que j'ai fait : importer cette table sous le pseudo PAIEMENT_CHEQUE, et dans les Profiles Utilisateurs, j'ajoute un filtre sur cette table : Type_paiement='CHEQUE'. Et rebelotte avec les CB. Mon problème, c'est que je dois faire des jointures externes sur ces tables, du type : SELECT .... from FACTURE F LEFT OUTER JOIN PAIEMENT_CHEQUE C on F.ID=C.Fact_ID Or avec le filtre dans mes profiles, Impromptu ajoute Type_paiement='CHEQUE' dans la clause where. Ce qui exclu évidemment les factures non payées par chèque. (l'intérêt d'une telle requête est certe discutable, mais ce n'est qu'un exemple 2ème technique testée : la table est importée sous le pseudo PAIEMENT_CHEQUE, et je définis manuellement la jointure externe avec FACTURE de la manière suivante: F.ID=C.Fact_ID et C.Type_paiement='CHEQUE' Or la requête créée par Impromptu est : select ... from FACTURE F left outer join PAIEMENT_CHEQUE C on F.ID=C.Fact_ID and 'CHEQUE'=C.Type_paiement au lieu de select ... from FACTURE F left outer join PAIEMENT_CHEQUE C on F.ID=C.Fact_ID and C.Type_paiement='CHEQUE' Et donc, ça ne résout en rien le problème. 3ème méthode testée : je déclare ma jointure externe de la manière suivante : F.ID=DECODE(C.Type_paiement;'CHEQUE';C.Fact_ID;null) Et là ça marche, mais au niveau de la base de données, je perds l'utilisation de l'index sur Fact_ID... Autre remarque : avec ces 2 dernières méthodes, je suis obligé d'ajouter dans les profiles utilisateurs : F.Fact_ID n'est pas manquant comme filtre sur ma table PAIEMENT_CHEQUE. Pas très classe, mais bon, si c'est la seule solution... Le plus simple pour moi serait de créer une vue au niveau de la base de données (create view PAIEMENT_CHEQUE as select * from PAIEMENT where Type_paiement='CHEQUE'), mais je n'ai pas totalement la main sur la base, et on me demande de faire du "tout cognos"... Donc je ne vois plus trop quoi faire... Il est tout à fait possible que quelque chose m'ait échappé dans la doc d'Impromptu, mais c'est pas faute d'avoir cherché... Merci d'avance pour vos suggestions ! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com