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

 MySQL Discussion :

Syntaxe correcte pour jointure en la 2ème et 3ème table


Sujet :

MySQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 18
    Points : 13
    Points
    13
    Par défaut Syntaxe correcte pour jointure en la 2ème et 3ème table
    Bonjour à tous,

    Encore débutant en requête SQL, je fais appel à vos talents ;-)

    Voilà mon problème :

    Mes tables : Agenda, Agenda_detail, Contact, Client, Fournisseurs

    - Certains Agenda ont un Contact mais pas forcement...
    - Les Contact ont soit un Client soit un Fournisseur

    Mon But :

    -Récupérer les lignes Agenda et Agenda_detail selont certains critères : ça, aucun problème....même s'il n'y a pas de Contact.
    Et quand il y a un contact, me ramener le nom du client ou le nom du fournisseur :

    Bref quelque chose du genre :

    SELECT * //(précisés dans ma reqête mais écourté ici)
    FROM Agenda
    INNER JOIN Agenda_detail
    LEFT OUTER JOIN Contact ON Contact.idcontact = Agenda.idcontact //Retourner agenda même sans contact

    ??? LEFT OUTER JOIN Client ON Contact.idclient = Client.idclient
    LEFT OUTER JOIN Fournisseur ON Contact.idclient = Fournisseur .idfournisseur

    WHERE....

    Le problème c'est que mes 2 derniers LEFT OUTER JOIN doivent se basent sur Contact et non sur Agenda....

    Comment écrire cela ?

    Après vient nuturement mon WHERE avec mes conditions de dates sur Agenda....mais aucun problème avec cela.

    Un tout grand merci d'avance


    Me ramener

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 87
    Points : 104
    Points
    104
    Par défaut
    Salut


    Moi j'essayerai une sous requetes du genre:

    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
     
    SELECT * //(précisés dans ma reqête mais écourté ici)
    FROM Agenda
    INNER JOIN Agenda_detail
    LEFT OUTER JOIN 
    (
    SELECT * 
    FROM c1 Contact, c2 Contact, Fournisseur, Client
    WHERE
    c1.idclient = Client.idclient
    c2.idclient = Fournisseur .idfournisseur
    )
    ON Contact.idcontact = Agenda.idcontact //Retourner agenda même sans contact
     
    WHERE....
    J'ai pas tester le code mais l'idee est la meme si c'est pas forcement la syntaxe la plus jolie...

    Le oups c que les sous-requetes marchent seulement a partir de MySQL 4.1...

    PS: ta syntaxe avait l'air pas mal... Tu as qu'en meme verifier avant que ca marchait pas ??

  3. #3
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut Re: Syntaxe correcte pour jointure en la 2ème et 3ème table
    Citation Envoyé par Fred_76
    Bref quelque chose du genre :

    SELECT * //(précisés dans ma reqête mais écourté ici)
    FROM Agenda
    INNER JOIN Agenda_detail
    LEFT OUTER JOIN Contact ON Contact.idcontact = Agenda.idcontact //Retourner agenda même sans contact

    ??? LEFT OUTER JOIN Client ON Contact.idclient = Client.idclient
    LEFT OUTER JOIN Fournisseur ON Contact.idclient = Fournisseur .idfournisseur

    WHERE....
    Ca me parait très bien tout ça. Il n'y a rien à changer !
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Effetctivement.... je suis un peu moins NULL que je ne le pensais

    Je note pour info (même si je ne vous apprendrai pas grand chose : )

    SELECT *
    FROM Agenda
    INNER JOIN Agenda_detail ON agenda_detail.idagenda = agenda_detail.idagenda
    LEFT OUTER JOIN (Contact
    LEFT OUTER JOIN Client ON Contact.idclient = Client.idclient
    LEFT OUTER JOIN Fournisseur ON Contact.idfournisseur = Fournisseur.idfournisseur)
    ON Contact.idcontact = Agenda.idcontact
    WHERE....

    Merci pour pour l'attention portée à mon message....

    Fred

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

Discussions similaires

  1. Syntaxe correcte pour un Push de données vers une fonction
    Par bk313142 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 26/01/2013, 11h01
  2. Problème de syntaxe PHP pour un insert
    Par el_butcho dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 28/05/2006, 09h10
  3. Réponses: 1
    Dernier message: 05/04/2006, 14h22
  4. quelle syntaxe svp pour ce code ?
    Par man123 dans le forum Langage
    Réponses: 10
    Dernier message: 16/11/2005, 00h05
  5. Syntaxe PARAMETERS pour requête sous VBA
    Par GAGNON dans le forum VBA Access
    Réponses: 3
    Dernier message: 28/11/2003, 11h39

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