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 :

Detecter de jointure


Sujet :

C#

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 22
    Points : 13
    Points
    13
    Par défaut Detecter de jointure
    Bonjour à tous,

    Depuis mon code, je dois interroger des tables d'une base de données.

    L'utilisateur a toute liberté quand à la sélection des données qu'il veut consulter.

    Je dois donc construire dynamiquement ma requête en fonction de ses choix mais en respectant les éventuelles jointures de tables.

    Ne les connaissant pas à l'avance, comment les détecter depuis mon code afin de construire ma requête en conséquence ?

    Merci

    Fabrice

  2. #2
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2003
    Messages : 353
    Points : 361
    Points
    361
    Par défaut
    Salut,
    perso, je ne vois pas comment tu veux faire ca automatiquement.

    La brut de fondrie, je dirais qu'il est peut être possible de lire les propriétés d'une table et de voir les clès externes.

    Mais sinon, en ce moment, on est en train de développer un espéce de requetteur qui permettra de sélectionner des tables et de proposer de faire sa requête.
    Mais nous aurons préalablement définit les jointures

  3. #3
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    détecter les jointures est faisable si ton sgbd peut t'aider à le faire
    sql server enregistre les jointures dans des tables donc il est possible de lire les définitions (sys.foreign_key_columns, sys.syscolumns ...)

    après il faut penser qu'il y aura peut etre plusieurs cheminements d'une table à une autre, ou des jointures possibles sur 2 champs pour des tables cycliques alors qu'il faut en prendre qu'une ...
    donc il est peut etre préférable de montrer les résultats à l'utilisateur pour qu'il en choisisse une parmis celles qui sont possibles
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Si je comprends bien, tu fais des requêtes générées dynamiquement, sur des données se trouvant dans différentes tables, en fonction de critères de recherche quelconques ?
    Je vois 2 solutions :
    - soit tu fais les jointures de façon conditionnelles, en vérifiant si tu as besoin ou nom des champs de la table à joindre (comme critère ou comme donnée)
    - soit tu fais systématiquement toutes les jointures, mais en n'utilisant pas forcément des champs de toutes les tables. Cette solution rend beaucoup plus facile la génération des requêtes, mais n'est utilisable que si le volume de données est relativement faible. Pour un gros volume, tu es quasiment obligé de ne faire que les jointures utiles, pour optimiser la requête

Discussions similaires

  1. [VB6] [Lecteur] Détection de disquette
    Par oazar dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 31/10/2002, 12h37
  2. detection de lignes
    Par the.cable.guy dans le forum Algorithmes et structures de données
    Réponses: 29
    Dernier message: 10/10/2002, 11h15
  3. Detection arret de windows
    Par philippe30 dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 21/09/2002, 18h41
  4. Jointures INNER et jointures classiques ???
    Par UbiK dans le forum Langage SQL
    Réponses: 3
    Dernier message: 05/09/2002, 10h29
  5. jointure renvois pas tous les enregistrements
    Par rayonx dans le forum Langage SQL
    Réponses: 7
    Dernier message: 29/08/2002, 12h51

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