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

Access Discussion :

Concatenation multi tables


Sujet :

Access

  1. #1
    Candidat au Club
    Homme Profil pro
    Apprenti Ingénieur Généraliste
    Inscrit en
    Janvier 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti Ingénieur Généraliste
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Concatenation multi tables
    Bonjour à tous,

    Depuis plusieurs jours j'essaie de concaténer des champs d'une table en fonction d'une autre, même avec l'aide des tutoriels et des questions je n'y suis point arrivé.

    Avant de vous présenter mon problème voici quelques informations sur ma base

    L'architecture de ma base est celle ci:
    J'ai 3 tables une T_R29, T_R00 et une qui fait la jonction car j'ai un liens plusieurs à plusieurs entre ces 2 tables.
    voir pièce jointe

    Relations
    Pour l'instant je m'occupe seulement de la T_R00. Un Id_R00 peut avoir soit 0 , 1 ou plusieurs R29 associés. Pour les cas 1 ou plusieurs j'ai cette relation dans la table de jonction.

    Mon but est de faire une requête avec 2 champ Id_R00 et Id_R29 où je retrouverais tout les Id_R00 présent dans ma tables T_R00. Et dans le champ Id_R29 soit nous aurons rien soit 1 Id_R29 soit la concaténation des différents Id_R29 associé à l'ID_R00 que nous récupérons dans la tables de jonction.
    Voilà pour les présentations.

    J'ai suivis le tutoriel: Concaténer plusieurs enregistrements dans une seule colonne, pour concaténer mes enregistrement venant de la table de jonction.

    J'ai alors créer un module qui créer la concaténation dans la table de jonction, et dans le code de ma requête je rappelle ce module.

    Ma Requête:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT [T_Croquis Essai R00].[Id R00], RecupR29([Id_R00]) AS LesR29
    FROM [T_Croquis Essai R00] LEFT JOIN T_Jonction_R29_R00 ON [T_Croquis Essai R00].[Id R00] = T_Jonction_R29_R00.Id_R00;
    Or dans le tutoriel nous avions un SELECT DISTINCT. Sans le DISTINCT j'ai une requête qui marche à peut près. J'ai le résultat en pièce jointe.
    Voici mes problèmes:
    Dans le cas où il n'y à pas de Id_R29 associé ma requête me met une erreur.
    Dans le cas où il y a plusieurs ID_R29 j'ai bien la concaténation voulu mais il me reste le même nombre de ligne que d'Id_R29. Donc inutile.
    Si je met SELECT DISTINCT j'ai un message d'erreur "Type de donnée incompatible dans l'expression du critère"

    Je me suis fait quelques idées sur les causes de mes problèmes:
    Ma requête fonctionne parfaitement avec le SELECT DISTINCT si et seulement si je n'ai pas d'Id_R00 sans Id_R29 associé.

    Quelqu'un peut m'aider pour pouvoir résoudre mon problème de doublons et le messages d'erreur que j'ai dans mon champ Id_R29?

    Merci d'avance

    Cordialement,

    Ps: si je n'ai pas été assez claire demander moi des précisions.
    Images attachées Images attachées    

  2. #2
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    Si j'ai bien compris, on peut se baser sur ceci :

    Soit 3 tables (on notera au passage que, dans la table MYLINK la clé primaire repose sur les deux champs de liaison, ce qui fait que l'association des deux champs est forcément unique)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    CREATE TABLE R_00 
         (R00_ID INT COUNTER PRIMARY KEY
        , R00_LIB VARCHAR(100));
    CREATE TABLE R_29 
         (R29_ID INT COUNTER PRIMARY KEY
        , R29_LIB VARCHAR(100));
    CREATE TABLE MYLINK 
         (ML_FK_R00_ID INT
        , ML_FK_R29_ID INT
        , CONSTRAINT PK_R00_R29 
              PRIMARY KEY CLUSTERED (ML_FK_R00_ID, ML_FK_R29_ID)) ;
    Normalement, ta requête devrait avoir cette forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT
          R_00.R00_ID
        , R_29.R_29_ID
    FROM
                  R_00
        LEFT JOIN MYLINK ON R_00.R00_ID         = MYLINK.ML_FK_R00_ID
        LEFT JOIN R29    ON MYLINK.ML_FK_R29_ID = R_29.R29_ID
    Est-ce bien cela ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/05/2012, 11h47
  2. Création d'un état multi-tables
    Par rossy dans le forum Access
    Réponses: 1
    Dernier message: 21/10/2005, 14h40
  3. requete multi table - multi champ
    Par Jean-Matt dans le forum Oracle
    Réponses: 6
    Dernier message: 14/10/2005, 17h18
  4. Sélection multi table avec condition
    Par iuz dans le forum Langage SQL
    Réponses: 8
    Dernier message: 05/05/2004, 15h04
  5. UPDATE multi-tables sous SQL Server
    Par Cybernet dans le forum Langage SQL
    Réponses: 8
    Dernier message: 25/03/2004, 15h34

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