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

Langage SQL Discussion :

[MS Query] neophyte demande aide sur jointures SQL


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Points : 1
    Points
    1
    Par défaut [MS Query] neophyte demande aide sur jointures SQL
    bonjour,

    qqun peut il m'aider dans mes jointure..je n'ai jamais ecrit de SQL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT PRODUITS.CODPRO, PROSTOCK.QTESTK, .....etc
      FROM ENTCDE ENTCDE, ENTPIE ENTPIE, ...etc
            LEFT JOIN PRODUITS ON PRODUITS.CODPRO = LIGPIE.CODPRO 
            INNER JOIN ENTPIE ON ENTPIE.NUMPIE = LIGPIE.NUMPIE 
              AND PROSTOCK.CODPRO = PRODUITS.CODPRO 
              AND LIGCDE.CODPRO = PRODUITS.CODPRO 
              AND ENTCDE.NUMCDE = LIGCDE.NUMCDE 
              AND (
                   (LIGPIE.NUMPIE Like 'BC206%') 
               AND (LIGPIE.QTELIG<>0) 
               AND (ENTPIE.ETAPIE=1) 
               AND (PROSTOCK.CODSTK='MSS') 
               AND (ENTCDE.ETACOM=1)
                  )
    en fait quelle syntaxe faut il mettre si je souhaite accoller plusieurs jointures

    Par avance
    merci

  2. #2
    Membre éclairé
    Avatar de efficks
    Inscrit en
    Septembre 2005
    Messages
    712
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 712
    Points : 776
    Points
    776
    Par défaut
    Accoler???
    Avant de poster : FAQ, tutos, rechercher, google, ... Après :
    Merci

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    et bien je veux dire..avoir dans un query plusieurs jointures

    merci

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par thorgal972
    bonjour,

    qqun peut il m'aider dans mes jointure..je n'ai jamais ecrit de SQL

    SELECT PRODUITS.CODPRO, PROSTOCK.QTESTK, .....etc
    FROM ENTCDE ENTCDE, ENTPIE ENTPIE, ...etc
    LEFT JOIN PRODUITS ON PRODUITS.CODPRO = LIGPIE.CODPRO INNER JOIN ENTPIE ON ENTPIE.NUMPIE = LIGPIE.NUMPIE AND PROSTOCK.CODPRO = PRODUITS.CODPRO AND LIGCDE.CODPRO = PRODUITS.CODPRO AND ENTCDE.NUMCDE = LIGCDE.NUMCDE AND ((LIGPIE.NUMPIE Like 'BC206%') AND (LIGPIE.QTELIG<>0) AND (ENTPIE.ETAPIE=1) AND (PROSTOCK.CODSTK='MSS') AND (ENTCDE.ETACOM=1))

    en fait quelle syntaxe faut il mettre si je souhaite accoller plusieurs jointures

    Par avance
    merci
    un truc dans le genre :
    SELECT PRODUITS.CODPRO
    , PROSTOCK.QTESTK
    , ...
    FROM ENTCDE
    ...
    JOIN LIGCDE ON ENTCDE.NUMCDE = LIGCDE.NUMCDE
    JOIN ENTPIE ON ENTPIE.NUMPIE = LIGPIE.NUMPIE
    JOIN PRODUITS ON PRODUITS.CODPRO = LIGPIE.CODPRO
    PRODUITS.CODPRO = LIGPIE.CODPRO
    WHERE LIGPIE.NUMPIE Like 'BC206%')
    AND LIGPIE.QTELIG<>0
    AND ENTPIE.ETAPIE=1
    AND PROSTOCK.CODSTK='MSS'
    AND ENTCDE.ETACOM=1

    Il faut mettre dans le FROM les différentes tables et leur(s) jointure(s) et dans le WHERE les conditions de la requête.
    L'ordonnancement des tables du FROM est important puisqu'on ne peut faire une jointure qu'avec des tables définies précédement :
    Select ..
    From table1
    join table2 on table1.id = table2.id
    join table3...
    Ok

    Select ..
    From table1
    join table2 on table2.id = table3.id
    join table3...
    Faux

    Bon courage.

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    super merci!! je met en application tes conseils et te tiens au courant!!

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    en fait le from contient bien les tables et les données de jointure c'est apparemment juste que je n'arrive pas à enchainer les jointures telles que
    left join...
    join...
    join...
    un message d'erreur apparait et me dit que le mot JOIN est inattendu...???est ce qu'il manque une virgule? une paranthèse??

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut Collage
    Colle ici ta requête si tu veux de l'aide.

  8. #8
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    LA VOICI!!!

    SELECT PRODUITS.CODPRO, PROSTOCK.QTESTK, LIGPIE.ACHLIG, ENTPIE.NUMPIE, LIGPIE.CODCLI, ENTPIE.RAICLI, LIGPIE.CODFAM, LIGPIE.CODSTK, LIGPIE.DATLIG, LIGPIE.LIBPRO, LIGPIE.MONTVALIG, LIGPIE.NUMPIE, LIGPIE.PRIBRULIG, LIGPIE.PRINETDEV, LIGPIE.PRINETHDR, LIGPIE.PRINETLIG, LIGPIE.QTELIG, LIGPIE.REMLIG, LIGPIE.REVLIG, LIGPIE.REVLIGRDP, LIGCDE.QTELIG, LIGPIE.CODPRO, LIGCDE.CODPRO
    FROM C:\APPS\IGESTION\IGESTION.WD7\IGESTION.WDD~ENTCDE ENTCDE, C:\APPS\IGESTION\IGESTION.WD7\IGESTION.WDD~ENTPIE ENTPIE, C:\APPS\IGESTION\IGESTION.WD7\IGESTION.WDD~LIGCDE LIGCDE, C:\APPS\IGESTION\IGESTION.WD7\IGESTION.WDD~LIGPIE LIGPIE, C:\APPS\IGESTION\IGESTION.WD7\IGESTION.WDD~PRODUITS PRODUITS, C:\APPS\IGESTION\IGESTION.WD7\IGESTION.WDD~PROSTOCK PROSTOCK
    LEFT JOIN PRODUITS ON PRODUITS.CODPRO = LIGPIE.CODPRO
    JOIN ENTPIE.NUMPIE = LIGPIE.NUMPIE
    JOIN PROSTOCK.CODPRO = PRODUITS.CODPRO
    JOIN LIGCDE.CODPRO = PRODUITS.CODPRO
    JOIN ENTCDE.NUMCDE = LIGCDE.NUMCDE
    WHERE ((LIGPIE.NUMPIE Like 'BC206%') AND (LIGPIE.QTELIG<>0) AND (ENTPIE.ETAPIE=1) AND (PROSTOCK.CODSTK='MSS') AND (ENTCDE.ETACOM=1)

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Points : 13
    Points
    13
    Par défaut
    Si tu mets des virgules dans ton FROM tu ne peux joindre 2 tables. c'est un peu comme si c'était un nouveau select :
    Select...
    FROM table1, table2 on table1.id = table2.id
    Faux

    Il faut te debrouiller pour ne pas avoir de virgules entre 2 tables pour les associer avec un JOIN.
    Ou alors tu fais ta jointure dans le WHERE :
    Select ...
    From table1, table2, table3
    where table1.id= table2.id
    and table2.id = table3.id
    et là ça passe

  10. #10
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    merci masi le where ne me permet pas de faire de jointure externe?? non??

    Est il possible d'écrire:
    ....
    From table1
    left join table2 on table1.id = table2.id
    From table3
    inner join table2 on table3.id = table2.id

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Points : 13
    Points
    13
    Par défaut
    C'est vrai, le where ne permet pas les jointures externes.

    ne pas faire
    From table1
    left join table2 on table1.id = table2.id
    From table3
    inner join table2 on table3.id = table2.id

    mais
    from table1
    left join table2 on table1.id = table2.id
    , table3
    where table3.id = table1.id

    ce tuto est une petite mine d'or...
    http://sqlpro.developpez.com/cours/sqlaz/jointures/

  12. #12
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    j'ai essayé ça mais ne fonctionne pas non plus ........:
    SELECT *
    FROM
    C:\APPS\IGESTION\IGESTION.WD7\IGESTION.WDD~PRODUITS PRODUITS,
    LEFT JOIN LIGCDE ON PRODUITS.CODPRO = LIGCDE.CODPRO
    , C:\APPS\IGESTION\IGESTION.WD7\IGESTION.WDD~LIGPIE LIGPIE,
    , C:\APPS\IGESTION\IGESTION.WD7\IGESTION.WDD~ENTPIE ENTPIE,
    , C:\APPS\IGESTION\IGESTION.WD7\IGESTION.WDD~ENTCDE ENTCDE,
    , C:\APPS\IGESTION\IGESTION.WD7\IGESTION.WDD~PROSTOCK PROSTOCK,
    WHERE ENTPIE.NUMPIE = LIGPIE.NUMPIE AND PROSTOCK.CODPRO = PRODUITS.CODPRO AND ENTCDE.NUMCDE = LIGCDE.NUMCDE AND ((LIGPIE.NUMPIE Like 'BC206%') AND (LIGPIE.QTELIG<>0) AND (ENTPIE.ETAPIE=1) AND (PROSTOCK.CODSTK='MSS') AND (ENTCDE.ETACOM=1))

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Points : 13
    Points
    13
    Par défaut
    il ne faut pas mettre de virgule entre 2 join.

    C:\APPS\IGESTION\IGESTION.WD7\IGESTION.WDD~PRODUITS PRODUITS,
    LEFT JOIN LIGCDE ON PRODUITS.CODPRO = LIGCDE.CODPRO

  14. #14
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    oui désolée je l'avais corrigé ensuite mais il me dit toujours que la , est inattendue je pense qu'il parle de ça :


    SELECT *
    FROM
    C:\APPS\IGESTION\IGESTION.WD7\IGESTION.WDD~PRODUITS PRODUITS
    LEFT JOIN LIGCDE ON PRODUITS.CODPRO = LIGCDE.CODPRO
    , C:\APPS\IGESTION\IGESTION.WD7\IGESTION.WDD~LIGPIE LIGPIE
    , C:\APPS\IGESTION\IGESTION.WD7\IGESTION.WDD~ENTPIE ENTPIE
    , C:\APPS\IGESTION\IGESTION.WD7\IGESTION.WDD~ENTCDE ENTCDE
    , C:\APPS\IGESTION\IGESTION.WD7\IGESTION.WDD~PROSTOCK PROSTOCK
    WHERE ENTPIE.NUMPIE = LIGPIE.NUMPIE AND PROSTOCK.CODPRO = PRODUITS.CODPRO AND ENTCDE.NUMCDE = LIGCDE.NUMCDE AND ((LIGPIE.NUMPIE Like 'BC206%') AND (LIGPIE.QTELIG<>0) AND (ENTPIE.ETAPIE=1) AND (PROSTOCK.CODSTK='MSS') AND (ENTCDE.ETACOM=1))

  15. #15
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    et maintenant c'est prob d'initialisation de la requète...???

  16. #16
    Membre éclairé
    Avatar de efficks
    Inscrit en
    Septembre 2005
    Messages
    712
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 712
    Points : 776
    Points
    776
    Par défaut
    Essaye ceci!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT * FROM
    C:\APPS\IGESTION\IGESTION.WD7\IGESTION.WDD~PRODUITS PRODUITS
    LEFT JOIN C:\APPS\IGESTION\IGESTION.WD7\IGESTION.WDD~LIGPIE LIGCDE ON PRODUITS.CODPRO = LIGCDE.CODPRO
    LEFT JOIN C:\APPS\IGESTION\IGESTION.WD7\IGESTION.WDD~ENTPIE ENTPIE ON ENTPIE.NUMPIE = LIGPIE.NUMPIE
    LEFT JOIN C:\APPS\IGESTION\IGESTION.WD7\IGESTION.WDD~ENTCDE ENTCDE ON ENTCDE.NUMCDE = LIGCDE.NUMCDE
    LEFT JOIN C:\APPS\IGESTION\IGESTION.WD7\IGESTION.WDD~PROSTOCK PROSTOCK ON PROSTOCK.CODPRO = PRODUITS.CODPRO
    WHERE ((LIGPIE.NUMPIE Like 'BC206%') AND (LIGPIE.QTELIG<>0) AND (ENTPIE.ETAPIE=1) AND (PROSTOCK.CODSTK='MSS') AND (ENTCDE.ETACOM=1))
    Assure toi aussi que c'est bien des LEFT JOIN que tu recherche a faire et non des INNER JOIN ou des RIGHT JOIN ou des FULL JOIN
    Avant de poster : FAQ, tutos, rechercher, google, ... Après :
    Merci

  17. #17
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    merci, j'ai essayé..message d'erreur disant "mot LEFT inattendu"????

  18. #18
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Quel est le SGBD utilisé ? (cf CONSEILS... à lire AVANT de POSTER)

    Vu que l'implémentation des jointures n'est pas forcément la même pour tous les SGBD, j'ai du mal à imaginer que l'on puisse tenter de vous aider sans connaître cette info ?

    Merci ensuitre d'utiliser les balises code pour écrire vos requêtes, ça permet de les indenter et de les rendre beaucoup plus lisibles (cf message d'origine).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    C:\APPS\IGESTION\IGESTION.WD7\IGESTION.WDD~ENTPIE ENTPIE,
     C:\APPS\IGESTION\IGESTION.WD7\IGESTION.WDD~LIGCDE LIGCDE,
     C:\APPS\IGESTION\IGESTION.WD7\IGESTION.WDD~LIGPIE LIGPIE,
     C:\APPS\IGESTION\IGESTION.WD7\IGESTION.WDD~PRODUITS PRODUITS,
     C:\APPS\IGESTION\IGESTION.WD7\IGESTION.WDD~PROSTOCK PROSTOCK
    ce sont des noms de tables ???

    merci masi le where ne me permet pas de faire de jointure externe?? non??
    Si, mais selon une syntaxe plutôt obsolète, si vous avez lu le tutoriel conseillé, vous avez du apercevoir qq lignes à ce sujet
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  19. #19
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Points : 1
    Points
    1
    Par défaut
    Sorry..........., je ne suis pas programmeur SQL mais contrôleur de gestion donc totalement ignorant en matière de sgdb et de balise codes.
    Je pensais sincèrement que cette requète sous MS Query ne poserait pas de prob à ce forum mais visiblement il faut déjà avoir un certain "bagage" pour pouvoir poster. Je vais donc me débrouiller par moi même. Merci de votre attention.

  20. #20
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    J'ai peut-être été un peu abrupt, je m'en excuse car je ne voulais pas vous décourager, et je vais donc préciser qq petites choses

    Citation Envoyé par thorgal972
    Sorry..........., je ne suis pas programmeur SQL mais contrôleur de gestion donc totalement ignorant en matière de sgdb et de balise codes.
    Je vous demande juste de préciser quel outil vous utilisez. Vu que vous parlez de MS Query, je suppose que c'est Access ? ou Excel ? Autre ?

    Quand vous copiez-collez une requête dans votre code, sélectionnez-la et cliquez sur le bouton code : : Elle sera alors insérée dans un cadre, et vous pourrez l'indenter.

    Citation Envoyé par thorgal972
    Je pensais sincèrement que cette requète sous MS Query ne poserait pas de prob à ce forum mais visiblement il faut déjà avoir un certain "bagage" pour pouvoir poster.
    Il faut effectivement avoir un certain bagage pour faire des requêtes : j'ai du mal à imaginer que vous utilisiez les jointures externes "sans bagages" ?

    Le SQL n'est qu'un langage "théorique", que chaque éditeur de SGBD adapte à sa sauce : il est donc difficile de dépanner quelqu'un quand on ne sait pas avec quel outil il travaille, c'est bien là une des problèmatique majeure de ce forum
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

Discussions similaires

  1. Demande d'aide sur requêtes SQL
    Par ZygoMatic74 dans le forum SQL
    Réponses: 3
    Dernier message: 26/02/2015, 23h27
  2. [11gR2] Demande aide sur une requête SQL
    Par Igname dans le forum SQL
    Réponses: 17
    Dernier message: 08/10/2013, 10h08
  3. Demande aide sur requêtes SQL imbriquées
    Par pixworld2 dans le forum Requêtes
    Réponses: 5
    Dernier message: 24/12/2010, 16h23
  4. aide sur requête sql
    Par Vodkha dans le forum Langage SQL
    Réponses: 9
    Dernier message: 30/08/2005, 17h53
  5. Aide sur Requête SQL
    Par devdev dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/05/2005, 12h33

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