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 de tables


Sujet :

QlikView

  1. #1
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2019
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2019
    Messages : 52
    Points : 44
    Points
    44
    Par défaut Jointure de tables
    Bonjour

    Je vais tenter de décrire clairement mon besoin.
    Voici ma table de départ MITBAL :

    Nom : MITBAL.PNG
Affichages : 104
Taille : 3,4 Ko

    Et voici ce que je souhaite obtenir au final :
    Nom : Besoin final.PNG
Affichages : 93
Taille : 2,9 Ko

    J'ai besoin de récupérer les agences (MBWHLO) / articles (MBITNO) qui sont en OD (MBORTY) sur une 2nde agence (MBSUWH), et dont cette 2nde agence/article est également en OD sur une 3eme agence.

    Tous les éléments sont présents dans la table de départ.
    Pour y arriver, j'ai décomposé la problématique :

    1) je crée une 1ere table en ne tenant compte que des agences/articles qui sont en OD
    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
    Tab1:
    LOAD
    	[MBWHLO] AS WHLOTab1,
    	[MBITNO] AS ITNOTab1,
    	[MBORTY] AS ORTYTab1,
        [MBSUWH] AS SUWHTab1
        ;
    SQL SELECT 
    	"MBWHLO",
    	"MBITNO",
    	"MBORTY",
        "MBSUWH"
    FROM "PRDM3"."M3FDBPRD"."MITBAL"
    where mbcono = 100 and mbwhlo <> 'A00' 
    and mborty = 'OD' and left(mbsuwh,1) <> ' ';
    Ce qui donne la table suivante :
    Nom : Tab1.PNG
Affichages : 87
Taille : 2,8 Ko


    2) je crée une 2nde table identique en ne tenant compte que des agences/articles qui sont en OD
    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
    Tab2:
    LOAD
    	[MBWHLO] AS WHLOTab2,
    	[MBITNO] AS ITNOTab2,
    	[MBORTY] AS ORTYTab2,
        [MBSUWH] AS SUWHTab2
        ;
    SQL SELECT 
    	"MBWHLO",
    	"MBITNO",
    	"MBORTY",
        "MBSUWH"
    FROM "PRDM3"."M3FDBPRD"."MITBAL" 
    where mbcono = 100 and mbwhlo <> 'A00' 
    and mborty = 'OD' and left(mbsuwh,1) <> ' ';
    qui donne la table suivante :
    Nom : Tab2.PNG
Affichages : 108
Taille : 2,8 Ko

    3) A présent, j'ai besoin de lier les 2 tables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Tab3:
    select * from tab1;
    join select * from tab2
    where ITNOTab1 = ITNOTab2 and SUWHTab1 = WHLOTab2 and ORTYTab1 = ORTYTab2
    ;
    Mais le code ci-dessus ne fonctionne pas.
    Quelle syntaxe utiliser pour obtenir ce lien entre les 2 tables et ainsi obtenir les données des 2 tables dont j'ai besoin ?

    Ceci dit, il y a peut-être plus simple pour y arriver.
    Merci pour vos conseils

  2. #2
    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,

    Je n'ai pas compris s'il fallait que le lien entre le premier niveau et le 2em doit être sur le même produit ou non.
    Si c'est le cas, avec les données

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    data:
    LOAD * INLINE [
    MBWHLO, MBITNO, MBORTY, MBSUWH
    A01, 100034, OD, A65
    A01, 100034, OA, 
    A06, 100034, OD, A03
    A15, 100034, OA, 
    A65, 100034, OD, A03
    ];
    une simple jointure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    LEFT JOIN (data)
    LOAD 
    	MBITNO,	// clé
    	MBORTY,	// clé
    	MBWHLO AS MBSUWH, // Clé
    	MBWHLO AS MBSUWH_niv2,
    	MBSUWH AS MBSUWH_niv3
    RESIDENT data
    WHERE MBORTY = 'OD' AND len(MBSUWH) > 0;
    permettra d'ajouter un niveau 2 et un niveau 3 à toutes les lignes 'OD' liées à MBITNO et MBWHLO, s'il y a un MBSUWH sur ce niveau 2.

Discussions similaires

  1. Jointure de table avec Interbase
    Par ada_b dans le forum InterBase
    Réponses: 21
    Dernier message: 12/05/2010, 19h52
  2. Réponses: 7
    Dernier message: 10/02/2005, 00h13
  3. [FB1.5]Vue avec jointure sur tables ?
    Par Sitting Bull dans le forum SQL
    Réponses: 2
    Dernier message: 07/12/2004, 17h07
  4. jointure sur table et procedure stocké
    Par pram dans le forum SQL
    Réponses: 3
    Dernier message: 18/11/2004, 21h56
  5. requete(jointure 2 tables) qui marche pas
    Par DaxTaz dans le forum Langage SQL
    Réponses: 3
    Dernier message: 01/06/2004, 17h50

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