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

Requêtes et SQL. Discussion :

Requête pour relier 3 Tables [AC-2007]


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2010
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 117
    Points : 99
    Points
    99
    Par défaut Requête pour relier 3 Tables
    Bonjour à tous

    J'ai 3 tables

    Tbl_Clients 54 Enregistrements
    Clé_Client
    Nom
    Prénom

    Tbl_RelationsDuClient 117 Enregistrements
    Clé_Relation
    CléSecondaire_Client
    NomRelation
    PrénomRelation
    TelRelation

    Tbl_AdhésionsDuClient 475 Enregistrements
    CléAdhésion
    CléSecondaire_Client
    Organisme
    DateAdhésion

    Je veux éditer la fiche Client avec ses Relations et ses Adhésions

    Donc je fais une requête avec les 3 tables reliées par la Clé_Client
    en espèrent avoir 592 Enregistrements (117+475)

    Ben la Requête m'en renvoie 1027

    Depuis ce matin je bataille avec les Requêtes mais je ne trouve pas la bonne solution

    Si vous avez une idée....

    En tout cas merci

    sbc

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 632
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 632
    Points : 56 951
    Points
    56 951
    Billets dans le blog
    40
    Par défaut
    Bonsoir,

    quel est le code SQL de la requête ? 

  3. #3
    Membre régulier
    Inscrit en
    Janvier 2010
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 117
    Points : 99
    Points
    99
    Par défaut
    Bonjour f-leb

    ma requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT Tbl_Clients.Clé_Client, Tbl_Clients.Nom, Tbl_RelationsDuClient.NomRelation, Tbl_AdhésionsDuClient.Organisme
    FROM (Tbl_Clients INNER JOIN Tbl_AdhésionsDuClient 
    ON Tbl_Clients.Clé_Client = Tbl_AdhésionsDuClient.CléSecondaire_Client) 
    INNER JOIN Tbl_RelationsDuClient 
    ON Tbl_Clients.Clé_Client = Tbl_RelationsDuClient.CléSecondaire_Client;
    En fait j'ai essayé plusieurs combinaisons la Requête UNION ne le fait pas non plus car tous mes champs sont différents
    Mon but est d'imprimer la Fiche Client avec
    les Relations du Client
    les Adhésions du Client

    sbc

  4. #4
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 632
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 632
    Points : 56 951
    Points
    56 951
    Billets dans le blog
    40
    Par défaut
    Bonjour,

    si on imagine un client c1 avec les relations r1, r2 et r3 puis les adhésions a1 et a2, ta requête ne peut que retourner des couples avec les combinaisons :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    c1	r1	a1
    c1	r1	a2
    c1	r2	a1
    c1	r2	a2
    c1	r3	a1
    c1	r3	a2
    Code sql : 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
    SELECT Tbl_Clients.Clé_Client, Tbl_Clients.Nom, T.Libellé, T.TypeRelation
    FROM
    Tbl_Clients INNER JOIN
    (
      SELECT Ad.CléSecondaire_Client,
             Ad.Organisme as Libellé,
             "organisme" as TypeRelation
         FROM Tbl_AdhésionsDuClient as Ad
     
    UNION ALL
     
      SELECT Re.CléSecondaire_Client,
             Re.NomRelation,
             "Relation" as TypeRelation
         FROM Tbl_RelationsDuClient as Re
    ) as T
    ON Tbl_Clients.Clé_Client = T.CléSecondaire_Client ;

    La requête va retourner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    c1	a1	"organisme"
    c1	a2	"organisme"
    c1	r1	"Relation"
    c1	r2	"Relation"
    c1	r3	"Relation"
    et on peut envisager des tris/regroupements dans l’état, cela ne convient pas ?

  5. #5
    Membre régulier
    Inscrit en
    Janvier 2010
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 117
    Points : 99
    Points
    99
    Par défaut
    Merci f-leb

    Cela me convient parfaitement !

    Bonne fin de week-end

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

Discussions similaires

  1. Requête pour "sérialiser" une table de comptage
    Par aztazt dans le forum Langage SQL
    Réponses: 2
    Dernier message: 05/10/2009, 11h07
  2. [AC-2003] Requête pour remplir une table à partir d'un fichier Excel
    Par olivier777 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 07/09/2009, 10h52
  3. Requète pour syncrhoniser 2 tables
    Par jeanflo037 dans le forum Langage SQL
    Réponses: 9
    Dernier message: 15/05/2009, 17h12
  4. Réponses: 4
    Dernier message: 05/10/2008, 02h41
  5. [system join ]Comment faire pour relier les tables systems?
    Par zoltix dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 16/11/2007, 07h52

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