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 recherche multi table avec table "lien"


Sujet :

Requêtes et SQL.

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 206
    Points : 127
    Points
    127
    Par défaut requête recherche multi table avec table "lien"
    Encore une bonne journée qui s'annonce !
    Il semble ne me reste qu'un souci (majeur) avant d'avoir une application fonctionnelle : créer une requête pour alimenter une liste de résultat de recherche.

    * Cette requête devra retourner champ1, champ2, champ3(clé primaire) de table1 et champa, champb, champc de table2.

    * La recherche pourra s'effectuer sur l'ensemble de ces champs, excepté champc. (mais ça, je pense qu'on...)

    * table3 a pour champs :
    - champ3, lié a table1.champ3 (dans outils==>relation)
    -champref, lié a table2.champref, qui est un champ numéroauto (dans table2)

    En gros, table3 sert de "lien" entre table1 et table2.

    je n'arrive pas à trouver de requête SQL, si quelqu'un pouvait au moins me dire si c'est réalisable de cette façon, que je sache si ça vaut la peine de continuer à me trouer le crane ?

    Je crois qu'il y a une autre méthode, abordée partiellement dans le tuto de Fabrice CONSTANTS, mais ça m'a encore fait peur à la cinquième lecture, donc je n'y retournerai pas de suite, sauf si nécéssité.

    Hop, à plus.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 645
    Points : 34 350
    Points
    34 350
    Par défaut
    Salut,
    si j'ai bien compris ton problème, tu dois chercher une requête de ce style (nom des champs pourrave mais l'idée est là):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT T1.A,T1.B,T1.C,T2.D,T2.E,T2.F 
    FROM (Table1 AS T1 INNER JOIN Table3 as T3 
    ON T1.champ3=T3.champ3) 
    INNER JOIN Table2 AS T2 
    ON T3.champref=T2.champref;

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 206
    Points : 127
    Points
    127
    Par défaut
    Citation Envoyé par jpcheck Voir le message
    Salut,
    si j'ai bien compris ton problème, tu dois chercher une requête de ce style (nom des champs pourrave mais l'idée est là):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT T1.A,T1.B,T1.C,T2.D,T2.E,T2.F 
    FROM (Table1 AS T1 INNER JOIN Table3 as T3 
    ON T1.champ3=T3.champ3) 
    INNER JOIN Table2 AS T2 
    ON T3.champref=T2.champref;
    Je vais tester de ce pas, y rajouter mes clauses WHERE, retester et je viens editer/mettre le tag résolu vu que ça semble être sympa comme méthode !

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 206
    Points : 127
    Points
    127
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SQL = "SELECT [INDEXS].[Catégorie], [INDEXS].[SCatégorie], [INDEXS].[Spécialité], [REFDOC].[Société], [REFDOC].[Parution] " & _
    "FROM (INDEXS JOIN REFDOC ON [INDEXS].[Spécialité]= [SPEDOC].[Spécialité]) " & _
    "INNER JOIN REFDOC ON [SPEDOC].[DocRéf] = [REFDOC].[DocRéf];"
    Me.lstresults.RowSource = SQL
    Me.lstresults.Requery
    J'ai placé ce code sur mon formload et ma liste reste vierge...

    J'y retourne de ce pas.

  5. #5
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 645
    Points : 34 350
    Points
    34 350
    Par défaut
    l'ordre de tes jointures n'est pas bon, essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SQL = "SELECT [INDEXS].[Catégorie], [INDEXS].[SCatégorie], [INDEXS].[Spécialité], [REFDOC].[Société], [REFDOC].[Parution] " & _
    "FROM (INDEXS JOIN SPEDOC ON [INDEXS].[Spécialité]= [SPEDOC].[Spécialité]) " & _
    "INNER JOIN REFDOC ON [SPEDOC].[DocRéf] = [REFDOC].[DocRéf];"
    Me.lstresults.RowSource = SQL
    Me.lstresults.Requery

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 206
    Points : 127
    Points
    127
    Par défaut
    Citation Envoyé par jpcheck Voir le message
    l'ordre de tes jointures n'est pas bon, essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SQL = "SELECT [INDEXS].[Catégorie], [INDEXS].[SCatégorie], [INDEXS].[Spécialité], [REFDOC].[Société], [REFDOC].[Parution] " & _
    "FROM (INDEXS JOIN SPEDOC ON [INDEXS].[Spécialité]= [SPEDOC].[Spécialité]) " & _
    "INNER JOIN REFDOC ON [SPEDOC].[DocRéf] = [REFDOC].[DocRéf];"
    Me.lstresults.RowSource = SQL
    Me.lstresults.Requery
    Raté, ça ne passe pas mieux.
    T'embêtes pas, si tu es certain que c'est un truc de ce genre, je vais continuer à chercher seul le temps que quelqu'un me balance une solution miracle :p

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 206
    Points : 127
    Points
    127
    Par défaut
    Hop, hop, hop,
    en fait ça ressemble plus à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SQL = "SELECT INDEXS.Catégorie, INDEXS.SCatégorie, INDEXS.Spécialité, REFDOC.Société, REFDOC.Parution " & _
    "FROM REFDOC INNER JOIN (INDEXS INNER JOIN SPEDOC ON INDEXS.Spécialité = SPEDOC.Spécialité) ON REFDOC.DocRéf = SPEDOC.DocRéf " & _
    "ORDER BY INDEXS.Spécialité"
    Reste à inclure les clauses WHERE toussa pour le moteur de recherche, mais j'ai ma "table" de base déjà !
    Merci

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

Discussions similaires

  1. Moteur de recherche par tags avec table relationelle
    Par Overstone dans le forum Langage SQL
    Réponses: 9
    Dernier message: 16/06/2010, 14h31
  2. [AC-2007] Formulaire de recherche multi-critères avec champs variables
    Par chris1012 dans le forum IHM
    Réponses: 6
    Dernier message: 28/09/2009, 10h50
  3. Moteur de recherche multi critères avec filtre
    Par kina17 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 08/04/2008, 19h33

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