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

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    mai 2008
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2008
    Messages : 188
    Points : 101
    Points
    101

    Par défaut Jointure sur plusieurs tables

    bonjour a tous,

    j ai 3 tables
    avec les enregistrments suivants


    codesandwich
    idsandwich libellesandwich
    1 saumon
    2 thon
    3 crudite


    codeajout
    idajout libelleajout
    1 tomate
    2 oeuf
    3 fromage


    commandes
    idcommande idsandwich codeajout1 codeajout2 codeajout3 codeajout4
    1 1 1 2
    2 3 2
    3 1 1 3
    4 2 1 2 3


    je cherche a afficher les resultats sous forme de libellé
    idcommande idsandwich codeajout1 codeajout2 codeajout3 codeajout4
    1 saumon tomate oeuf
    2 crudite oeuf
    3 saumon tomate fromage
    4 thon tomate oeuf fromage

    je passe par une requete avec des jointures externes mais je n obtient le bon libellé que pour le codeajout1, ensuite il le repete sur tous les autres codeajout

    merci

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Ingénieur d'études décisionnel
    Inscrit en
    mai 2002
    Messages
    7 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 7 822
    Points : 24 537
    Points
    24 537

    Par défaut

    Pour que l'on puisse t'aider à corriger ta requête, il serait peut-être utile que tu nous la montre...
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    mai 2008
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2008
    Messages : 188
    Points : 101
    Points
    101

    Par défaut

    je ne suis pas devant mon code mais de memoire j'ai ce type de requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    select c.idsandwich, s.libellesandwich, c.codeajout1, a.libelleajout, c.codeajout2, a.libelleajout, c.codeajout3, a.libelleajout
    from commandes c
    left outer join codesandwich s
    on c.idsandwich = s.idsandwich
    left outer join codeajout a
    on c.codeajout1 = a.codeajout
    or
    c.codeajout2 = a.codeajout
    or
    c.codeajout3 = a.codeajout

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Ingénieur d'études décisionnel
    Inscrit en
    mai 2002
    Messages
    7 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 7 822
    Points : 24 537
    Points
    24 537

    Par défaut

    C'est bien ce que je pensais...
    Il faut faire autant de jointures qu'il y a de colonnes codeajoutn
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    mai 2008
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2008
    Messages : 188
    Points : 101
    Points
    101

    Par défaut

    ok je vais essayer
    et je vous tiens au courant pour marquer comme resolue ou pas


    merci

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    mai 2008
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2008
    Messages : 188
    Points : 101
    Points
    101

    Par défaut

    bonjour,

    j ai essayé avec autant de jointure que de codeajout(n) mais cela ne marche pas.

    si quelqu un a une idée pour la realisation de ce genre de requete.
    peut etre avec des sous-requetes?

    de plus j ai essayé d ajouter une clause group by, mais la syntaxe est en erreur!?

    merci a tous

  7. #7
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Ingénieur d'études décisionnel
    Inscrit en
    mai 2002
    Messages
    7 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 7 822
    Points : 24 537
    Points
    24 537

    Par défaut

    Citation Envoyé par cdsoft Voir le message
    j ai essayé avec autant de jointure que de codeajout(n) mais cela ne marche pas.
    Encore une fois, sans voir ton code ni connaître le résultat erroné ou le message d'erreur, il est très difficile de te donner des réponses.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    mai 2008
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2008
    Messages : 188
    Points : 101
    Points
    101

    Par défaut

    bonsoir,

    j ai quelque peu changé ma structure relationnelle mais cela ne change pas grand chose a mon probleme.
    voici les tables et ma requete, qui ne me retournent pas les resultats attendus



    codesandwich
    idcodesandwich libellesandwich
    1 saumon
    2 thon
    3 crudite


    codeajout
    idcodeajout libelleajout
    1 tomate
    2 oeuf
    3 fromage

    sandwich
    idsandwich codesandwich codeajout1 codeajout2 codeajout3 qte
    1 3 3 1 2
    2 1 3 2 1

    commandes
    idcommandes nom date idsanwich
    1 toto 20181117 1
    2 tata 20181118 2

    je cherche a afficher les resultats sous forme de libellé
    sandwich
    nom qte libelle sandwich libelleajout1 libelleajout2 libelleajout3
    toto 2 crudite fromage tomate
    tata 1 saumon fromage oeuf


    voici ma requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT codesandwich.libelle,codeajout.libelle,Commandesclient.nomclient,Commandesclient.qte 
    FROM Commandesclient 
    LEFT OUTER JOIN  sandwich 
    ON  Commandesclient.IDsandwich = sandwich.IDsandwich 
     
    LEFT OUTER JOIN codesandwich ON codesandwich.IDcodesandwich = sandwich.codesandwich
    LEFT OUTER JOIN codeajout ON codeajout.IDcodeajout = sandwich.codeajout1
    mais je ne parviens pas a ajouter les autres libellés correspondants aux codeajout2 et codeajout3

    merci

  9. #9
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Ingénieur d'études décisionnel
    Inscrit en
    mai 2002
    Messages
    7 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 7 822
    Points : 24 537
    Points
    24 537

    Par défaut

    Il faut faire autant de jointures qu'il y a de colonnes codeajoutn
    Qu'est-ce que tu ne comprends pas dans cette phrase ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    SELECT  csw.libelle
        ,   aj1.libelle
        ,   aj2.libelle
        ,   aj3.libelle
        ,   cmd.nomclient
        ,   cmd.qte 
    FROM    Commandesclient AS  cmd
        LEFT OUTER JOIN  
            sandwich        AS  sdw
            ON  cmd.IDsandwich = sdw.IDsandwich 
       LEFT OUTER JOIN 
            codesandwich    AS  csw        
            ON  csw.IDcodesandwich = sdw.codesandwich
        LEFT OUTER JOIN
            codeajout       AS  aj1
            ON  aj1.IDcodeajout = sdw.codeajout1
        LEFT OUTER JOIN
            codeajout       AS  aj2
            ON  aj2.IDcodeajout = sdw.codeajout2
        LEFT OUTER JOIN
            codeajout       AS  aj3
            ON  aj3.IDcodeajout = sdw.codeajout3
    ;
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    mai 2008
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2008
    Messages : 188
    Points : 101
    Points
    101

    Par défaut

    merci

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

Discussions similaires

  1. Problème de jointure sur plusieurs tables
    Par papouuu dans le forum Langage SQL
    Réponses: 1
    Dernier message: 25/01/2011, 15h02
  2. [AC-2007] Jointure sur plusieurs tables
    Par Steph0 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 20/01/2011, 09h24
  3. jointure sur plusieurs tables fonctionne pas
    Par jmsch dans le forum Requêtes
    Réponses: 1
    Dernier message: 03/11/2010, 22h55
  4. Jointures sur plusieurs tables
    Par Daibai dans le forum Requêtes
    Réponses: 3
    Dernier message: 17/12/2009, 10h55
  5. hibernate-criteria : jointure sur plusieurs tables
    Par loic72 dans le forum Hibernate
    Réponses: 9
    Dernier message: 24/09/2007, 18h27

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