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

QlikView Discussion :

Produit cartésien au lieu de jointure avec IntervalMatch


Sujet :

QlikView

  1. #1
    Membre du Club Avatar de xanav
    Inscrit en
    Mars 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 55
    Points : 53
    Points
    53
    Par défaut Produit cartésien au lieu de jointure avec IntervalMatch
    Bonjour à tous,

    Je suis face à un problème depuis 2 jours et je n'arrive pas à comprendre ce qu'il se passe. Jusqu'à présent je travaillais principalement en SQL (avec jointures, sous requêtes et tout le tralala) pour calculer les données dont j'ai besoin. Mais vis à vis à des temps de requête, je voulais essayer de travailler plus dans le langage script QV...

    Voici ce que j'ai : J'ai une table des commandes (CDE) avec, entre autre, une semaine de livraison prévu. J'ai une autre table des bons de livraison (BL), avec le numéro de commande concerné et la semaine de livraison réelle. Les semaines sont identifiées par un identifiant unique (TPS_ID...) et font respectivement référence à une table des semaines de livraison prévues et des semaines de livraison réelles.
    Voici ce que je veux : Je veux pouvoir compter le nombre de semaines ouvrées (champ de la table semaine) entre la semaine prévue et la réelle. Pour cela je voudrais lier une commande à toutes les semaines entre le prévu et le réel.

    J'ai suivi les informations de ce post et j'arrive au code suivant :

    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
    //Chargement de la table des semaines
    SEMAINE_RETARD:
    LOAD TPS_ID AS TPS_ID_RETARD,
         TPS_ANNEE AS TPS_ANNEE_RETARD,
         TPS_SEMAINE AS TPS_SEMAINE_RETARD,
         TPS_ANNEE * 100 + TPS_SEMAINE AS TPS_ANNEESEMAINE_RETARD,
         TPS_OUVREE AS TPS_OUVREE_RETARD
    Resident D_TEMPS;
    
    //Chargement d'une table temporaire avec le TPS_ID mini et maxi pour chaque commande
    TmpIntervalCde:
    NoConcatenate
    LOAD CDE_NUMERO,
         Max(TPS_ID_LIVRAISON_BL) AS TPS_ID_MAX
    Resident BL
    Group By CDE_NUMERO;
    Inner Join LOAD CDE_NUMERO,
                    TPS_ID_LIVRAISON_CDE AS TPS_ID_MIN
    Resident CDE;
    
    //IntervalMatch pour faire le lien entre TPS_ID_RETARD et TPS_ID_MIN, TPS_ID_MAX
    TmpLien:
    IntervalMatch(TPS_ID_RETARD) 
    LOAD TPS_ID_MIN, TPS_ID_MAX
    Resident TmpIntervalCde
    Where TPS_ID_MIN <= TPS_ID_MAX; //précision car si la commande est livrée en avance, elle n'est liée à aucune semaine
    J'ai un peu galéré pour arriver à ce résultat mais ça, ça marche.
    Là où ça se complique c'est quand je veux simplifier mon schéma. J'ai rajouté le code suivant pour n'avoir qu'une table qui sert de lien entre mes semaines et mes commandes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    TmpLienCdeTpsId:
    NoConcatenate
    LOAD TPS_ID_RETARD,
         TPS_ID_MIN, 
         TPS_ID_MAX
    Resident TmpLien;
    Join 
    LOAD TPS_ID_MIN,
         TPS_ID_MAX,
         CDE_NUMERO
    Resident TmpIntervalCde;
    
    DROP Tables TmpIntervalCde, TmpLien;
    Mais là, surprise, Qlikview n'applique pas la jointure et je me retrouve avec des OUT OF MEMORY à tous les coup !

    Merci de votre aide.

  2. #2
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    En faisant un LEFT JOIN plutot ?

Discussions similaires

  1. [AC-2010] Probleme avec les produits cartésiens
    Par marcus crassus dans le forum Access
    Réponses: 4
    Dernier message: 06/08/2014, 08h27
  2. Question SQL Jointure - Produit cartésien ?
    Par tamise dans le forum Langage SQL
    Réponses: 4
    Dernier message: 25/01/2014, 17h49
  3. Supprimer le produit cartésien d'une jointure
    Par David55 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 13/08/2010, 09h52
  4. Produit cartésien au lieu d'une jointure
    Par Smix007 dans le forum Débuter
    Réponses: 1
    Dernier message: 17/04/2008, 14h50
  5. [SAGE]Jointures avec SGBD
    Par mat.M dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 09/10/2003, 12h23

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