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

C# Discussion :

join entre datatable


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut join entre datatable
    Bonjour

    Décidement je n'ai jamais réussi a utiliser efficacement le systeme de recherche dans Developpez.com

    Je viens d'essayer quelques recherches "Join Datatable" "Jointure Datable"

    Ca sort un tas de truc qui n'ont pas l'air tres pertinent par rapport a la question.

    Je cherche comment faire l'equivalent d'un INNER JOIN entre deux datatable indépendante (non référencée dans un dataset)

    Le resultat devrait etre une datatable ou un dataview
    Est ce possible (je suppose et j'espère)

    Comment ?

    Merci a celui qui pourrait expliquer le priincipe en quelques mots

    Entretemps je continue mes recherche sur Google

  2. #2
    Membre émérite Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Par défaut
    Salut,
    un truc comme ca ne fonctionne pas ?
    Code csharp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    DataTable dt1;
    DataTable dt2;
    DataRelation dr = new DataRelation("relation1", dt1.Columns["MaColonne1"], dt2.Columns["MaColonne2"]);
    dt1.Rows[0].GetChildRows(dr);

  3. #3
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Salut Ctxnop

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dt1.Rows[0].GetChildRows(dr);
    Si je prends ton exemple, ca signifie que je dois iterer tous les rows de dt2 pour trouver le child Row dans dt2

    Et que je dois alors encore faire un importrow dans une Table dt3 pour construire mon résultat

    Ca me semble un peu fastidieux et je m'attendais a trouver mieux

  4. #4
    Membre émérite Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Par défaut
    Non non c'est bien pire que ca
    La DataRelation ne peut être créée que sur des tables faisant parti de même DataSet (je m'en suis rappelé après avoir posté) donc il faut d'abord copier les deux tables pour créer la relation. En prime il faut construire manuellement la table de résultat puisque tu aura la ligne d'entête d'un coté et les lignes filles de l'autre mais pas une table fusionnée.
    Et pour couronner le tout tu ne peux faire une relation que si elle concerne des champs unique (genre avec une contrainte de primarykey) alors que ca n'est absolument pas nécessaire dans un vrai JOIN.

    Bref, ma proposition était toute pourrie, dsl ^^'.

    Remarque Microsoft n'a pas l'air de proposer beaucoup mieux :
    http://support.microsoft.com/kb/326080/en-us

    Je crois que tu va devoir te taper l'écriture d'une fonction qui va copier cellule par cellule avec évaluation de la contrainte du JOIN...

    C'est étrange qu'ils n'aient pas prévu ca tout de même

  5. #5
    Membre émérite Avatar de chamamo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    588
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 588
    Par défaut
    oui tu n'as pas le choix, ce n'est pas du SQL, le seul moyen de tout récupérer c'est parcourir.

    tu veux faire quoi au juste?

  6. #6
    Membre émérite Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Par défaut
    On se doute bien que c'est pas du SQL mais de la à ne pas pouvoir merger deux tables sur un prédicat simple c'est tout de même abusé je trouve.

    Sa question est plutôt claire non ? Faire un équivalent d'un inner join
    Moi j'ai compris qu'il voulait un truc du style :
    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
     
    dt1:
    +--------------------------+
    | Id | CaptionId | Machin  |
    +--------------------------+
    | 0  | CP_01     | bla bla |
    +--------------------------+
     
    dt2:
    +--------------------------+
    | CaptionId | lng | text   |
    +--------------------------+
    | CP_01     | fr  | Salut  |
    | CP_01     | en  | hello  |
    +--------------------------+
     
    La fonction InnerJoin(dt1, dt2, "CaptionId") retourne ce DataTable :
    +------------------------------------------+
    | Id | Machin   | CaptionId  | lng | text  |
    +------------------------------------------+
    | 0  | bla bla  | CP_01      | fr  | Salut |
    | 0  | bla bla  | CP_01      | en  | hello |
    +------------------------------------------+

  7. #7
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Citation Envoyé par chamamo Voir le message
    tu veux faire quoi au juste?
    Ben une jointure de table

    Et pour faire encore plus simple, En sql je dirais

    select * from t1 where t1.id in (select id from t2)

    Mais bon je vais faire ca tout betement a l'aide de deux dataview triés et d'une fusion merge comme on l'a appris a l'école

  8. #8
    Membre émérite Avatar de chamamo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    588
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 588

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utiliser LINQ pour un JOIN entre deux datatables
    Par olibara dans le forum Linq
    Réponses: 6
    Dernier message: 06/07/2010, 16h18
  2. Réponses: 2
    Dernier message: 29/12/2008, 15h11
  3. array.join entre array !
    Par akyo_ dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 27/11/2008, 15h45
  4. [C++.NET] Egalite entre datatables
    Par raboin dans le forum VC++ .NET
    Réponses: 5
    Dernier message: 06/06/2006, 15h59
  5. Join entre 2 tables provenant de Base de donnees differentes
    Par edmotets dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 24/11/2005, 08h33

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