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 :

jointure entre tables


Sujet :

QlikView

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2007
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 226
    Points : 78
    Points
    78
    Par défaut jointure entre tables
    Bonjour,

    Je suis perdu avec les jointures entre mes tables. En fait, j'ai une table A qui retrace les événements théoriques et une table B qui enregistre les événements réels,
    avec entre les deux le champ date comment faire pour garder tous les enregistrements de ma table A complétés par ceux de la table B de manière à constater les événements non réalisés.

    Avez vous une idée?

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 940
    Points : 1 409
    Points
    1 409
    Par défaut
    Bonjour.
    Tout d'abord, le fait de lier les deux tables sur le champ date pose certainement un problème de conception :
    - Que se passe-t-il si deux événements théoriques doivent se produire le même jour ?
    - Que se passe-t-il si la réalisation d'un événement se passe à une autre date ?

    Si la structure des tables est identique, on peut utiliser la technique de la table creuse, c'est à dire que l'on charge les deux tables dans une seule.
    Imaginons deux tables avec une zone DateEvt pour la date événement et une zone CA pour le chiffre d'affaire.
    On pourrait imaginer ce script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TableEvt:
    Load DateEvt, CA as budget, 0 as Realise from table_evenements_théoriques
    Load DateEvt, 0 as budget, CA as Realise from table_evenements_réalisés
    On aura ainsi la possibilité de faire un graphique avec sum(budget) pour récupérer le CA théorique et sum(Realise) pour récupérer le CA réalisé.
    J'espère avoir répondu à ta question ...

  3. #3
    Modérateur

    Inscrit en
    Octobre 2006
    Messages
    1 649
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 649
    Points : 2 529
    Points
    2 529
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Supposons que vous ayez ces données :
    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
    Theorique:
    LOAD * INLINE [
    DateTheorique, EvenementThéorique
    1, Réveil
    2, Petit déjeuner
    3, Douche
    4, Brossage dents
    5, Travail
    6, Déjeuner
    7, Travail
    8, Repas
    9, TV
    10, Dodo
    ];
     
    Reel:
    LOAD * INLINE [
    DateReel
    1
    4
    5
    7
    8
    10
    ];
    Si vous voulez :
    - rajouter les lignes des événements non réalisés dans "Reel"
    - rajouter un champ "Status" pour savoir si un événement a été réalisé, vous pouvez faire :


    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
    Theorique:
    LOAD * INLINE [
    DateTheorique, EvenementThéorique
    1, Réveil
    2, Petit déjeuner
    3, Douche
    4, Brossage dents
    5, Travail
    6, Déjeuner
    7, Travail
    8, Repas
    9, TV
    10, Dodo
    ];
     
    Reel:
    LOAD *,
    'réalisé' AS Status
    ;
    LOAD * INLINE [
    DateReel
    1
    4
    5
    7
    8
    10
    ];
     
    JOIN (Reel)
    LOAD 
    DateTheorique AS DateReel,
    'non réalisé' AS Status
    RESIDENT Theorique
    WHERE NOT EXISTS (DateReel, DateTheorique);

    Si à la place vous préférez rajouter un flag "Réalisé" dans la table "Theorique" :

    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
    Theorique:
    LOAD * INLINE [
    DateTheorique, EvenementThéorique
    1, Réveil
    2, Petit déjeuner
    3, Douche
    4, Brossage dents
    5, Travail
    6, Déjeuner
    7, Travail
    8, Repas
    9, TV
    10, Dodo
    ];
     
    Reel:
    LOAD * INLINE [
    DateReel
    1
    4
    5
    7
    8
    10
    ];
     
     
    LEFT JOIN (Theorique)
    LOAD 
    DateReel AS DateTheorique,
    1 AS Réalisé
    RESIDENT Reel;

Discussions similaires

  1. Jointure entre table de différentes bases de données
    Par iLoLo21 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 19/01/2009, 14h35
  2. [1.x] jointure entre tables de bd différentes symfony
    Par jemele dans le forum Symfony
    Réponses: 2
    Dernier message: 07/07/2008, 10h03
  3. jointure entre tables de bases différentes
    Par mcdelay dans le forum Requêtes
    Réponses: 2
    Dernier message: 17/04/2007, 12h56
  4. Maximum authorisé de jointure entre tables
    Par Arkane dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 04/12/2006, 17h49
  5. Réponses: 2
    Dernier message: 10/10/2006, 18h59

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