none
comment faire une jointure externe multiple en vb.net dans VS2010 ? RRS feed

  • Question

  • Bonjour,

    j'ai créé pour ma société une petite application en vb.net sous VS2010. Cette application s'appuie sur des fichiers .CSV que je lie pour mettre en ligne des informations. A un moment, je dois joindre plusieurs de ces fichiers et je voudrais récupérer toutes les lignes mêmes celles pour lesquelles j'ai des valeurs inexistantes par la jointure. J'essaye donc de faire une jointure externe. Or il me faut faire une jointure externe (avec LEFT JOIN) sur plusieurs tables et cela ne fonctionne pas. J'arrive à le faire sur deux tables mais pas plus. Est-ce normal ? Y-a-til un moyen de le faire sur plusieurs tables ?

    C'est très important et très urgent.

    Merci pour vos réponses.

    Karine

    • Type modifié Ciprian Duduiala lundi 31 octobre 2011 07:23 attente de feedback
    • Type modifié Ciprian Duduiala mercredi 2 novembre 2011 09:49 solution trouvée
    lundi 24 octobre 2011 14:37

Réponses

  • Bonjour,

    Désolée, de ma réponse tardive, mais des soucis personnels m'ont malheureusement éloignés de mon ordinateur pendant quelques jours.

    J'ai résolu mon problème depuis. J'avais un problème de parenthèses mal mises et de plus mes conditions WHERE étaient mal posées et annulaient ma jointure externe. J'ai donc mis les parenthèses où il fallait et enlevé les conditions WHERE inutiles et cela a fonctionné.

    cmd="select a2.[REGION2] , a0.[nb] as nb0, a1.[nb] as nb1, a2.[nb] as nb2 from ((t1_3.csv a2 LEFT JOIN t1_1.csv a0 ON a2.[REGION2]=a0.[REGION2])  LEFT JOIN t1_2.csv a1 ON a2.[REGION2]=a1.[REGION2])  where order by a2.[REGION2] "
    

    Merci de vos réponses

    Karine

     

    mercredi 2 novembre 2011 09:38

Toutes les réponses

  • Bonjour,

    "Cela ne marche pas" c'est-à-dire ? Cela donne un message d'erreur ou le résultat n'est pas celui attendu ? Le problème pourrait être que l'on essaie d'associer deux tables filles ce qui ne va pas donner un résultat très exploitable.

    Par exemple si j'ai une liste de pays avec les principales villes et les principaux cours d'eau, on risque de produire qq chose comme :

    France Loire Paris
    France Loire Marseille
    France Rhône Paris
    France Rhône Marseille

    etc avec toutes les combinaisons possibles entre une ville et un cours d'eau... L'association entre un pays et les villes d'une part et un pays et les cours d'eau d'autre part a un sens mais si je veux produire un seul résultat qu'est ce qui me ferait associer un cours d'eau particulier avec une ville plutôt qu'une autre ?

    Faire plutôt le contraire (ce n'est pas "il me faut une jointure", c'est je veux quel résultat et donc la jointure est elle adaptée ?) Par exemple je verrais plutôt dans le cas ci-dessus une liste des pays avec le nombre de villes et de cours d'eau ce qui permettrait de voir sur une seule ligne, les pays sans ville et/ou cours d'eau.

    Expliquer un peu mieux le résultat à obtenir et le problème actuellement rencontré.


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    lundi 24 octobre 2011 17:32
    Modérateur
  • Bonjour,

    Excusez-moi, je me rends compte que je n'ai pas été très explicite.

    Lorsque je dis, cela ne fonctionne pas, c'est que cela me donne un message d'erreur.

    En fait ma jointure dois me donner une sorte de tableau comptable croisé avec par exemple en ligne les régions de france et en colonne des tranches d'âge et dans les cases du tableau, il y a le nombre de chaque personne de la tranche d'âge par région. Mais il existe des régions pour lesquelles certaines tranches d'âge sont inexistantes. J'ai un fichier .csv par tranche d'âge, il me faut donc les joindre pour avoir le tableau entier et je veux voir les cases vides. J'arrive à joindre deux de ces fichiers (c'est-à-dire cela me donne un résultat), mais si je veux faire une jointure sur plus de deux fichiers, cela me provoque une erreur.

    Voici la commande que j'écris pour une jointure de deux fichiers et qui me donne un résultat correct :

    dim cmd as string
    cmd="select a1.[REGION2] , a0.[nb] as nb0, a1.[nb] as nb1 from t1_7.csv a1 LEFT JOIN  t1_1.csv a0 ON a1.[REGION2]=a0.[REGION2]   where  a0.[AGE]='18-22' and a1.[AGE]='23-27'  order by a1.[REGION2] "
    

    Voici la commande que j'écris pour une jointure de plusieurs fichiers et qui me donne une erreur :

    dim cmd as string
    cmd="select a2.[REGION2] , a0.[nb] as nb0, a1.[nb] as nb1, a2.[nb] as nb2 from t1_3.csv a2 LEFT JOIN t1_1.csv a0 ON a2.[REGION2]=a0.[REGION2]  LEFT JOIN t1_2.csv a1 ON a2.[REGION2]=a1.[REGION2]  where a0.[AGE]='18-22' and a1.[AGE]='23-27' and a2.[AGE]='28-37' order by a2.[REGION2] "
    

    mardi 25 octobre 2011 09:41
  • Cela serait plus simple de donner aussi le texte du message d'erreur...


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    mardi 25 octobre 2011 09:59
    Modérateur
  • Bonjour, Karine,

     

    Est-ce que vous avez résolu votre problème ? Sinon, pouvez-vous svp nous donner le message d’erreur comme Patrice vous a demandé ?

     

    Merci d’avance de tenir la communauté informée sur la suite de vos démarches.

     

    Cordialement,

     

    Cipri


    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    Ciprian DUDUIALA, MSFT  
    •Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.

    vendredi 28 octobre 2011 07:19
  • Bonjour,

    Désolée, de ma réponse tardive, mais des soucis personnels m'ont malheureusement éloignés de mon ordinateur pendant quelques jours.

    J'ai résolu mon problème depuis. J'avais un problème de parenthèses mal mises et de plus mes conditions WHERE étaient mal posées et annulaient ma jointure externe. J'ai donc mis les parenthèses où il fallait et enlevé les conditions WHERE inutiles et cela a fonctionné.

    cmd="select a2.[REGION2] , a0.[nb] as nb0, a1.[nb] as nb1, a2.[nb] as nb2 from ((t1_3.csv a2 LEFT JOIN t1_1.csv a0 ON a2.[REGION2]=a0.[REGION2])  LEFT JOIN t1_2.csv a1 ON a2.[REGION2]=a1.[REGION2])  where order by a2.[REGION2] "
    

    Merci de vos réponses

    Karine

     

    mercredi 2 novembre 2011 09:38
  • Bonjour,

     

    Merci d’avoir partagé avec nous la solution.

     

    Bonne journée,

     

    Cipri


    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    Ciprian DUDUIALA, MSFT  
    •Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.

    mercredi 2 novembre 2011 09:50