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 MySQL Discussion :

Jointure de 3 Tables


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2006
    Messages : 61
    Par défaut Jointure de 3 Tables
    Bonjour,

    Je souhaite joindre 2 tables en fonction d'une seule table.

    En gros je souhaite toujours joindre T1 et joindre T2 ou T3 uniquement si y'a des résultats en sachant que Si T2 à un résultat T3 ne le serra pas et inversement.

    A l'heure actuel j'ai fais la requête suivant qui joins tout et donc je n'arrive pas à joindre avec des restrictions pouvez vous m'aider svp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT 
        T2.*, 
        T3.*,  
        T1.* 
        FROM T1 
        LEFT JOIN T2 ON T1.id_produit = T2.id_p 
        LEFT JOIN T3 ON T1.id_produit = T3.id_p  
        WHERE T1.id_client='50' 
        ORDER BY T1.id ASC

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 063
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 063
    Par défaut
    Bonjour,

    Y a-t-il beaucoup de champs dans T2 et T3 ? Sont-ils identiques ou pas ?
    Peut-on avoir des détails sur le schéma exacte des 3 tables ?

    L'idée serait de faire des jointures externes (2 jointures à gauche : une entre T1 et T2 et une autre entre T1 et T3). Si les champs de T2 et T3 sont les mêmes, alors tu peux utiliser la fonction COALESCE(T2.champ1, T3.champ1) qui gardera la valeur non nulle des 2 champs.

    Pour être plus précis, il nous faudrait plus d'infos .

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2006
    Messages : 61
    Par défaut
    Bonjour et merci de me répondre,

    Oui T2 et T3 ont des champs complètement identique et il y'a 27 champs pour chacune de ces deux tables.

    T1 une table plus modeste où est enregistré l'id de T2 ou T3, de ce fait certain résultat sont null quand ont interroge une table en cherchant l'id d'une autre table ...

    Du coup ta solution m'intéresse fortement car elle semble bien approprié, car ce que je souhaite est, et, tu l'a bien compris, c'est éliminé les réponses NULL.

    Si tu peux me faire un exemple de requêtes par rapport à ce que tu m'a dis ça serrait super .

    Tu as la structure des 3 tables en pj.

    Merci beaucoup
    Images attachées Images attachées

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2006
    Messages : 61
    Par défaut
    Re bon et bien j'ai trouvé

    Je te met ce que j'ai fais (Je met le nom de mes vrai table là)

    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
     
    SELECT 
        COALESCE(produits.pdv, produits_stand_by.pdv) AS pdv, 
        COALESCE(produits.lot, produits_stand_by.lot) AS lot, 
        COALESCE(produits.yvert, produits_stand_by.yvert) AS yvert,
        COALESCE(produits.id_p, produits_stand_by.id_p) AS id_p, 
        COALESCE(produits.descrip, produits_stand_by.descrip) AS descrip, 
        COALESCE(produits.stock, produits_stand_by.stock) AS stock, 
        COALESCE(produits.checked, produits_stand_by.checked) AS checked, 
        COALESCE(produits.vente, produits_stand_by.vente) AS vente, 
        clients.*, 
        commande.* 
        FROM commande 
        LEFT JOIN produits ON commande.id_produit = produits.id_p 
        LEFT JOIN produits_stand_by ON commande.id_produit = produits_stand_by.id_p 
        LEFT JOIN clients ON commande.id_client = clients.id_c 
        WHERE commande.id_client='".$_POST['idclient']."' 
        ORDER BY commande.id_co ASC
    Donc ce code marche parfaitement et l'exécution est super rapide, je te remercie beaucoup pour ton aiguillage.

    ++

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

Discussions similaires

  1. Jointure entre deux tables et résultat
    Par Asdorve dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/06/2004, 14h50
  2. [jointure]requete possible de double jointure entre 2 tables
    Par akira_le_gaucher dans le forum Langage SQL
    Réponses: 4
    Dernier message: 11/05/2004, 15h03
  3. jointure sur TROIS tables
    Par caribou_belle dans le forum Langage SQL
    Réponses: 8
    Dernier message: 01/03/2004, 11h20
  4. Jointure entre 2 tables et OR
    Par PyRoFlo dans le forum Requêtes
    Réponses: 2
    Dernier message: 02/02/2004, 18h42
  5. Jointure sur 2 tables de bases différentes
    Par Celina dans le forum Langage SQL
    Réponses: 10
    Dernier message: 10/11/2003, 11h56

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