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 :

[JOINTURES] Condition de jointure avec plusieurs tables


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2008
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 43
    Points : 38
    Points
    38
    Par défaut [JOINTURES] Condition de jointure avec plusieurs tables
    Bonjour bonjour,

    J'ai un petit souci sur une requête SQL quand je veux imbriquer deux joins pour sélectionner des données provenant de trois table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT *
    FROM 
    (T1 INNER JOIN T2 ON (T1.C1 = T2.C1))
    INNER JOIN T3 ON (T3.C2 = T2.C1 AND T3.C3 = T1.C1)
    Access refuse tout simplement cette jointure avec le message "Expression JOIN non supportée".

    Y'aurait-il donc une âme charitable pour m'expliquer pourquoi ce n'est "pas supporté", et éventuellement, comment contourner ce souci ?

    Merci d'avance et bonne aprem à tous

  2. #2
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 591
    Points
    3 591
    Billets dans le blog
    8
    Par défaut
    salut
    supposons que T1 est liée à T2 par C1 et le même T1 est liée à T3 par C2, la requête doit être:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT *
    FROM 
    (T1 INNER JOIN T2 ON (T1.C1 = T2.C1))
    INNER JOIN T3 ON (T3.C2 = T1.C2)
    Mais s'il y a une jointure en cycle, il te faudra trois requêtes: la 1ère sur T1 et T2, la 2ème Sur T1 et T3 puis la 3ème sur les deux premières.
    @+

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2008
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 43
    Points : 38
    Points
    38
    Par défaut
    Erf je me suis trompé dans la requête, sur le deuxième join :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT *
    FROM 
    (T1 INNER JOIN T2 ON (T1.C1 = T2.C1))
    INNER JOIN T3 ON (T3.C2 = T2.C2 AND T3.C3 = T1.C3)
    Mais en gros, si j'ai bien compris, ça ne change rien... il faut que j'utilise trois requêtes ?

    Merci pour votre réponse et bonne après midi

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


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 777
    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 777
    Points : 58 179
    Points
    58 179
    Billets dans le blog
    42
    Par défaut
    bonsoir,

    essayer en cassant le cycle, c.a.d au lieu de faire les jointures:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    T1-------T2-------T3
    |                  |
    +------------------+
    faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    T1-------T2-------T3------T1_1
    où T1_1 est un alias de T1

  5. #5
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 591
    Points
    3 591
    Billets dans le blog
    8
    Par défaut
    Très astucieux (plus court, plus rapide).

Discussions similaires

  1. Jointure avec plusieurs tables referentielles : erreur dsx
    Par sadounarezki dans le forum QlikView
    Réponses: 0
    Dernier message: 04/07/2015, 15h30
  2. Requête : Insert avec plusieurs tables
    Par bleu_ciel dans le forum Access
    Réponses: 4
    Dernier message: 01/06/2006, 21h42
  3. [VB 2005]Dataset avec plusieurs tables
    Par estelledany dans le forum Windows Forms
    Réponses: 3
    Dernier message: 29/05/2006, 14h25
  4. [MySQL] requete avec liaisons avec plusieurs tables
    Par pod1978 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 10/03/2006, 22h21
  5. historique avec plusieurs table
    Par Cybher dans le forum Requêtes
    Réponses: 2
    Dernier message: 05/08/2005, 16h38

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