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 :

INNER JOIN et LEFT JOIN Imbriques


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2005
    Messages : 218
    Points : 85
    Points
    85
    Par défaut INNER JOIN et LEFT JOIN Imbriques
    Bonjour,

    j ecris cette requete, mais access me dit que j'ai une erreur de syntaxe.
    J'ai mal aux yeux a force de chercher une erreur de syntaxe, en voyez vous une?

    Ou alors je ne peux pas imbriquer comme ca ds access?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT *
    FROM  T_Huddleboard AS H  LEFT JOIN  T_Daily_Data AS D  on ( D.WD_Date= H.HuddleDate)     and (D.user_ID = H.user_ID) 
                                                      INNER Join  T_user  U on  (H.USER_ID = U.user_ID)

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Bonjour.

    La syntaxe du SQL de Access peut être assez complexe et pas franchement agréable pour les humains.

    La meilleur façon de faire du SQL dans Access c'est de laisser Access se débrouiller avec et de passer par l'éditeur de requête en mode création.
    Tu vas pouvoir ajouter tes tables en les sélectionnant dans une liste et faire tes jointures en faisant un glisser/déplacer d'une table à l'autre.
    Si tu veux change le type de jointure, il te suffit de faire un click droit sur le trait de jointure et de choisir celle que tu veux.
    Construire une requête comme cela prend en général 5 min. Il est vrai que tu peux faire à la main des requêtes que le glisser/déplacer ne permet pas mais pour les requêtes ordinaires c'est difficilement battable.
    En plus l'éditeur de SQL de Access ne vaut pas grand chose, il est pire que Notepad. Il est tellement mauvais que quand, parfois, je tape du SQL je le fait généralement dans Notepad pour le copier ensuite dans Access.

    Une fois que la requête donne les résultats attendus, tu peux si tu le souhaites aller voir le SQL généré en changeant l'affichage (en hait à gauche) pour SQL.
    Note que Access a tendance a utiliser un paquet de parenthèses pas franchement obligatoire.

    Sinon, en effet, il y a parfois des incompatibilités entre les types de jointure ou sur l'ordre dans lequel tu les faits.

    A+

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2005
    Messages : 218
    Points : 85
    Points
    85
    Par défaut
    Coucou Marot

    Merci pour la rapide reponse.
    Oui en effet j'aurais pu faire comme tu dis.
    Je n'ai juste pas l habiture d'utiliser l'editeur... Faudrait que je m'y mette

    Anyway j ai trouve pourquoi ca buggait. Une histoire de parentheses. La syntaxe correcte est la suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    SELECT *
    FROM  ((T_Huddleboard AS H  LEFT JOIN T_Daily_Data D   
                                                                     on ( D.WD_Date= H.HuddleDate) and (D.user_ID = H.user_ID))
                                                      INNER Join  T_user  U 
                                                                   on  (H.USER_ID = U.user_ID))
    En gros il faut des parentheses apres le FROM. Mais next time j'utiliserai l'editeur...

    Merci!!!!

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Si on avait un éditeur à hauteur (coloration syntaxique, suggestion des champs quand tu a sélectionné une table, mise en forme contrôlable) taper en SQL ne serait pas aussi pénible mais là c'est vraiment bas de gamme.

    Le glisser/déplacer le bat à plat de couture.

    Ceci dit j'ai fait le test une fois avec un collègue qui utilisait Oracle en mode texte car j'avais un besoin de puissance performance.
    J'avais mis 1/2h à faire ma requête qui comportait environ 15 tables jointes par 2 champs ou plus chaque qui donnait le résultat mais prenant environ 1/4h à s'exécuter.
    Pour y parvenir, j'avais procédé une table jointe à la fois sur un sous-ensemble des données, ce qui explique le temps que cela m'avait pris à la concevoir.
    Au bout de 3h mon collègue m'était revenu en me disant que ma requête était impossible à faire :-) !

    A+

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

Discussions similaires

  1. Plusieurs left join ou right join
    Par devman2011 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 09/03/2012, 07h59
  2. left join et right join
    Par huître dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 13/10/2011, 21h25
  3. outer join ou left join
    Par Yves Archambault dans le forum Requêtes
    Réponses: 1
    Dernier message: 24/08/2011, 09h11
  4. LEFT OUTER JOIN et LEFT JOIN
    Par polace dans le forum MySQL
    Réponses: 3
    Dernier message: 19/11/2008, 15h24
  5. LEFT JOIN ou LEFT OUTER JOIN
    Par maysa dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/05/2007, 10h20

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